■下記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に関係しているのでしょうか?
No.1ベストアンサー
- 回答日時:
>・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というテーブルが存在しないのでエラーとなります。
失礼しました。こちらは、書き写し間違いでした
No.2
- 回答日時:
>・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があるのか分からなかったのですが、
おかげで疑問が解決しましたー
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQLサーバから、項目の属性(型...
-
エクセルの関数について教えて...
-
DB設計について
-
カンマ区切りの文字列を検索する
-
WHERE id = ? について
-
マイクラPC版のコマンドで効率...
-
副問合せの書き方について
-
sqlで、600行あるテーブルを100...
-
LEFT JOIN と GROUP BY
-
グループ毎にある列の最大値の...
-
エラー 1068 (42000): 複数の主...
-
accessのチェックボックスをSQL...
-
Mysqlでunionを使った検索速度...
-
複数テーブルのGROUP BY の使い...
-
SELECT文で片方のテーブルを優...
-
MySQLで半角濁音文字の検索
-
ストアドのエラーについて
-
SQLにて特定の文字を除いた検索...
-
Unionした最後にGROUP BYを追加...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
副問合せの書き方について
-
select文のwhere句に配列を入れ...
-
マイクラPC版のコマンドで効率...
-
SQLサーバから、項目の属性(型...
-
エラー 1068 (42000): 複数の主...
-
[MySQL] 3つのテーブルの結合で...
-
Access パラメータクエリをcsv...
-
SQLにて特定の文字を除いた検索...
-
SQL Left Join で重複を排除す...
-
ストアドのエラーについて
-
Unionした最後にGROUP BYを追加...
-
バインド変数について
-
PL/SQLの変数について
-
sqlで、600行あるテーブルを100...
-
WordpressのContact form 7でzi...
-
selectした大量データをinsert...
-
inner joinをすると数がおかし...
おすすめ情報