MySQL では、直接 (テーブルの結合)または別のテーブルの結合 ( )を介してSELECT A.* FROM A
、内部結合条件が満たされる場所が必要です。結果を得るための適切な方法を誰かが指摘できますか?B
C
WHERE B.field = myvalue
次のテーブルがあります: A、B、C は次のように関連付けられています (A は B に参加し、B は C に参加し、A は C に参加します)。
B
/ \
A --- C
非常に単純に見えますが、検索を B から C への結合のみに制限すると結果が得られるにもかかわらず、次のコードを実行すると空のセットが得られます。
SELECT A.* FROM A
INNER JOIN C ON C.id = A.c_id
INNER JOIN B AS B_thru_C ON B_thru_C.id = C.b_id
INNER JOIN B AS B_from_A ON B_from_A.id = A.b_id
WHERE B_thru_C.field = 'myvalue' OR B_from_A.field = 'myvalue';
# yields an empty set
SELECT A.* FROM A
INNER JOIN C ON C.id = A.c_id
INNER JOIN B AS B_thru_C ON B_thru_C.id = C.b_id
WHERE B_thru_C.field = 'myvalue';
# yields results