3

テーブルA, B, Cがあり、特定のCに関連するAを求めたい。

SELECT * 
FROM A a
  INNER JOIN B b
    ON b.id = a.b_id
  LEFT JOIN C c
    ON c.b_id = b.id AND c.type = 'hogehoge'
WHERE c.id IS NULL

このとき、 c.type = 'hogehoge' 以外の type も抽出されてしまいます。

retake
  • 379
  • 1
  • 7
  • 17

1 Answers1

3

type = 'hogehoge'のレコードのみを抽出したいのであれば、c.type = 'hogehoge'を結合条件ではなく抽出条件にしましょう。

SELECT * 
FROM A a
  INNER JOIN B b
    ON b.id = a.b_id
  LEFT JOIN C c
    ON c.b_id = b.id
WHERE c.type = 'hogehoge'
htb
  • 2,027
  • 3
  • 15
  • 35