■下記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億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
WordpressのContact form 7でzi...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
Access パラメータクエリをcsv...
-
SQLサーバから、項目の属性(型...
-
sqlで、600行あるテーブルを100...
-
selectした大量データをinsert...
-
SQLにて特定の文字を除いた検索...
-
2つのテーブルを結合するときに...
-
URL と行番号の指定
-
SQL SERVER2005でシフト表を出...
-
HAVING count()で重複したデー...
-
Unionした最後にGROUP BYを追加...
-
最小値をUPDATE
-
【Transact-sql】 execの結果を...
-
複数のExcelアドインひとつのタ...
-
DB設計について
-
MySQL5でキーがないテーブルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
sqlで、600行あるテーブルを100...
-
WordpressのContact form 7でzi...
-
エラー 1068 (42000): 複数の主...
-
VIEWの元のテーブルのindexって...
-
selectした大量データをinsert...
-
SQL Left Join で重複を排除す...
-
[MySQL] 3つのテーブルの結合で...
-
SQLサーバから、項目の属性(型...
-
SQLにて特定の文字を除いた検索...
-
PL/SQLの変数について
-
【Transact-sql】 execの結果を...
-
Access パラメータクエリをcsv...
-
Unionした最後にGROUP BYを追加...
-
[MySQL] UNIQUE制約の値を更新...
-
副問合せの書き方について
-
DB設計について
-
1テーブル&複数レコードの更新...
おすすめ情報