• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LEFT JOINの使い方)

LEFT JOINの使い方

このQ&Aのポイント
  • LEFT JOINを使用したSQLクエリでデータが正しく取得できない場合、LEFT JOINの左右のテーブルを入れ替えるとデータが取得できることがあります。
  • ただし、左右のテーブルを入れ替える場合、取得するデータのカラム名も変更する必要があります。
  • 問題が発生しているSQLクエリの場合、MYSQLのバージョンやレンタルサーバーの設定に問題がある可能性も考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おそらく何もおかしなところはありません。 提示した結果になるようなSQLを書いています。 join, left join, right joinそれぞれの概念について よく調べてみる必要があるのではないかと。 下記のようなテーブルPREF,TEAMについて考えます。 ・テーブル PREF PREF_CD  PREF_NAME ---------------------- 1        大阪 2        東京 3        広島 4        沖縄 ・テーブル TEAM TEAM_CD  PREF_CD  TEAM_NAME ------------------------------------ 1        1        タイガース 2        2        スワドーズ 3        2        ジャイアンツ 4        3        カープ 5        5        ドラゴンズ 6        6        ベイスターズ (1) join select A.PREF_CD,A.PREF_NAME,B.TEAM_CD,B.PREF_CD,B.TEAM_NAME from PREF A join TEAM B on B.PREF_CD = A.PREF_CD [結果] A.PREF_CD  A.PREF_NAME  B.TEAM_CD  B.PREF_CD  B.TEAM_NAME ------------------------------------------------------------ 1          大阪           1          1          タイガース 2          東京           2          2          スワローズ 2          東京           3          2          ジャイアンツ 3          広島           4          3          カープ (2) left join select A.PREF_CD,A.PREF_NAME,B.TEAM_CD,B.PREF_CD,B.TEAM_NAME from PREF A left join TEAM B on B.PREF_CD = A.PREF_CD [結果] A.PREF_CD  A.PREF_NAME  B.TEAM_CD  B.PREF_CD  B.TEAM_NAME ------------------------------------------------------------ 1          大阪           1          1          タイガース 2          東京           2          2          スワローズ 2          東京           3          2          ジャイアンツ 3          広島           4          3          カープ 4          沖縄          (null)     (null)     (null) (3) right join select A.PREF_CD,A.PREF_NAME,B.TEAM_CD,B.PREF_CD,B.TEAM_NAME from PREF A right join TEAM B on B.PREF_CD = A.PREF_CD [結果] A.PREF_CD  A.PREF_NAME  B.TEAM_CD  B.PREF_CD  B.TEAM_NAME ------------------------------------------------------------ 1          大阪           1          1          タイガース 2          東京           2          2          スワローズ 2          東京           3          2          ジャイアンツ 3          広島           4          3          カープ (null)     (null)       5          5          ドラゴンズ (null)     (null)       6          6          ベイスターズ (1)~(3)はそれぞれ、 (1)A join B on ~   onで指定した条件に完全に一致するもののみを表示する。 (2)A left join B on ~   「left join」の左側にあるテーブルはすべて表示した上で、   onで指定した条件に一致する右側のテーブルのレコードがあれば   その情報も付加して表示。 (2)A right join B on ~   「right join」の右側にあるテーブルはすべて表示した上で、   onで指定した条件に一致する左側テーブルのレコードがあれば   その情報も付加して表示。 といったところです。

feed12
質問者

お礼

例を挙げて頂いたので理解が深まりました。 もう一度見直してみます。 どうもありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A