1

1対1のテーブル間でリンクを共有するテーブルがありますmenuaction

メニュー:id、name
アクション:ID、名前
MenAct:menu_id、action_id

すべてmenu.idMenAct.menu_idセットになっているわけではありません(つまり、一部のメニューには関連するアクションがありません)...

いつのペアを与えるselectを書くことができませんmenu.name, action.name

menu.id = MenAct.menu_id AND action.id = MenAct.action_id

それmenu.name, NULL以外の場合...

これにはネストされた要求または他のSQL手法が必要ですが、私はOracleSQLに非常に精通しています。

4

1 に答える 1

5

あなたがしたくLEFT JOINないように聞こえますINNER JOIN

select m.name, a.name
from menu m
left join menuact ma
    on m.id = ma.menu_id
left join action a
    on ma.action_id = a.id

Aは、他のテーブルに一致する行があるかどうかに関係なく、テーブルLEFT JOINからすべての行を返します。menu存在しない場合は、にnull値がありますaction

JOIN構文の学習についてサポートが必要な場合は、ここに結合の優れた視覚的説明があります

于 2013-02-06T15:25:50.580 に答える