- ベストアンサー
LEFT JOINが2つあるSQL文でANDの意味
- LEFT JOINが2つあるSQL文でANDの意味を教えてください。
- このSQL文は3つのテーブルを結合しています。左テーブルは「alive a」というテーブルで、その右に2つのテーブルが結合しています。
- また、このSQL文ではANDが使用されていますが、これは通常のAND演算子とは異なり、特定の条件に基づいて結合されるデータをフィルタリングするためのものです。ANDの前には論理式があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>・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というテーブルが存在しないのでエラーとなります。
その他の回答 (1)
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
>・LEFT JOINが2つあるので、3つのテーブルを結合しているのでしょうか? その通りです、alive、being、callの3つのテーブルを結合しています。 >左テーブルは「alive a」で、この右側に2つのテーブルが結合している、という認識でよいでしょうか? そのように解釈されて問題無いと思います。 >「AND」は、「WHERE」の前に来てもいいのでしょうか? WHERE以降のANDは結合後のテーブルに対する条件です、WHEREの前に来ると、最後のLEFT JOIN ON側の条件になるので、意味が異なります。
お礼
回答ありがとうございました >WHERE以降のANDは結合後のテーブルに対する条件です、WHEREの前に来ると、最後のLEFT JOIN ON側の条件になるので、意味が異なります なるほど。ANDの使い方には、色々あったんですね。 どうして、こんなところ(WHEREの前)に、ANDがあるのか分からなかったのですが、 おかげで疑問が解決しましたー
お礼
回答ありがとうございました。 大変参考になりましたー >LEFT JOIN call c ON (c.call_id = a.hoge_id AND f.hoge_id = 12) かっこで括っていただいので、分かりやすかったです >このSQLにはfというテーブルが存在しないのでエラーとなります。 失礼しました。こちらは、書き写し間違いでした