2011-12-20 3 views
0

私は左と右の結合演算子について少し混乱しています。以下の結合は同等ですか?

select * 
from <left table> lt 
    left join <right table> rt on lt.pk = rt.fk 

私は常に、参加の「左側」の側が正確にどちらかというと少し混乱しています。 "left join"キーワードの左側にあるテーブルは... "left table"であるか、またはon節の左側にあるテーブルであり、左テーブルにあるものと同じです。符号。私は上記のコードビットで

select * 
from <some table> st 
    inner join <left table> lt on st.pk = lt.fk 
    left join <right table r on rt.fk = st.pk 

は左表です...今、次のSELECT文を考える...しかし

ことになっていることを示している記事を読みましたか?私はあいまいさや不明瞭さのために以前の文章を考慮していると思います(実際には直接的には残っていないので)...私は、 "left table"がon節で指定されるのがより理にかなっていると思います。

私のすべてのビットは、そのロジックと戦っているようだ...私は少し明確化する必要があります...ありがとう、ありがとう。

+0

実際には...可能な複製からの回答が似ています。 Ruakhによって提供される - 「左」側は、実際には部署と従業員の結合の結果です。結合は左結合であるため、x JOIN y JOIN zは(x JOIN y)JOIN zと等価です。 - 左辺はテーブルと左テーブルの間の内部結合の結果です...正しいのですか? –

答えて

2

リストされている最初のテーブルは、すべての行が返されるテーブルです。 LEFT JOINの名前を持つテーブルは、最初のテーブルと一致する行のみを返し、一致するものが見つからない場合はNULL値を返します。

0

一般的に - いいえ、1つ以上のフィルタテーブルを導入しているためです。 ltのすべての行には対応するがあります。行はst - yesです。行の量は同じになります。列のコレクションは異なります。しかし、最初のクエリの結果セットは、2番目のクエリの結果セットのサブセット(stテーブルの列のみの違い)になります

関連する問題