に親表Aに子テーブルBに参加する場合の結果は、マルチ参加テーブルクエリで変化する場合、私は思ってきました。あなたが親表SQLロジック:A.FID = B.ID
A B
ID|FID FID
1|2 1
2|4 2
3|5 3
4|7 4
5|8 5
6|NULL 6
7|NULL 7
8|NULL 8
をお持ちの場合は
は、あなたがWHERE句で指定されたテーブルの列は関係ありませんか?例えば 、2つの違いは何です:
Select *
From Table A
Left Join B on A.FID = B.FID
WHERE A.FID IN (2,5,8)
Select *
From Table A
Left Join B on A.FID = B.FID
WHERE B.ID IN (2,5,8)
が助けてくれてありがとう!
EDIT: あなたの答えは良いもの(おそらく彼が探しているのは1)である間、彼のクエリの両方が、本質的にフィルタリングしていることから、マイケルは私の質問を解決したと私は実際には」
をそれをテストしていますB(A.FID、B.ID)のプライマリ・キーでは、実際には論理的には同じです(A.FIDはBの真の外部キー制約であると仮定します)。つまり、両方のクエリーは、B.IDが2,5または8でない行を除外します。これはメインテーブルとして持つと同じになりますが
SELECT *
FROM B
LEFT JOIN A ON A.FID = B.FID
WHERE B.FID IN (2,5,8)
: - マイケル・L.は
それが異なるだけであるが、表Bがメインテーブルであり、あなたがのようにB.IDに基づいて照会されます:
SELECT *
FROM B
LEFT JOIN A ON A.FID = B.FID
WHERE A.FID IN (2,5,8)
あなたはそれを試してみたのですか?実際 –
[なJOINのSQL JOINと異なる種類]の可能な重複(http://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins) –