■下記SQL文の意味を教えてください
SELECT a.*, b.being_name
FROM alive a
LEFT JOIN being b ON a.hoge_id = b.id
LEFT JOIN call c ON c.call_id = a.hoge_id
AND f.hoge_id = 12
WHERE f.hoge_id = 12 OR b.id = 12
※12の部分は動的に切り替わります
・LEFT JOINが2つあるので、3つのテーブルを結合しているのでしょうか?
・左テーブルは「alive a」で、この右側に2つのテーブルが結合している、という認識でよいでしょうか?
>SELECT フィールド名 FROM テーブル名 WHERE 条件式1 AND 条件式2
>「AND」は2つの条件式の論理積
・上記内容をネットで見かけたのですが、「AND」は、「WHERE」の前に来てもいいのでしょうか? それともこのSQLの「AND」は違う使い方をしているのでしょうか? 何か、LEFT JOINに関係しているのでしょうか?
>・LEFT JOINが2つあるので、3つのテーブルを結合しているのでしょうか?
はいそうです。
>左テーブルは「alive a」で、この右側に2つのテーブルが結合している、という認識でよいでしょうか?
はいそうです。(alive→beingって言うような意味です。)
>・上記内容をネットで見かけたのですが、「AND」は、「WHERE」の前に来てもいいのでしょうか?
「AND]は「WHERE」にかかっているのではなく「LEFT 」の結合の条件となります。
SELECT a.*, b.being_name
FROM alive a
LEFT JOIN being b ON a.hoge_id = b.id
LEFT JOIN call c ON (c.call_id = a.hoge_id AND f.hoge_id = 12)
WHERE f.hoge_id = 12 OR b.id = 12
<<追記>>
このSQLにはfというテーブルが存在しないのでエラーとなります。
質問者
お礼
回答ありがとうございました。
大変参考になりましたー
>LEFT JOIN call c ON (c.call_id = a.hoge_id AND f.hoge_id = 12)
かっこで括っていただいので、分かりやすかったです
>このSQLにはfというテーブルが存在しないのでエラーとなります。
失礼しました。こちらは、書き写し間違いでした
お礼
回答ありがとうございました。 大変参考になりましたー >LEFT JOIN call c ON (c.call_id = a.hoge_id AND f.hoge_id = 12) かっこで括っていただいので、分かりやすかったです >このSQLにはfというテーブルが存在しないのでエラーとなります。 失礼しました。こちらは、書き写し間違いでした