mysqlでleft joinした後にid is null としたとき、join の条件が消えてしまう


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

[code]

    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
    
[/code]

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




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

[code]

    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'
    
[/code]

