• ベストアンサー

SQLで、Join句で結合したテーブルにデータが無い場合について

SQLについての質問です。 Join句を使ってテーブルを結合しています。 Aテーブル(社員データ)に存在する勤務区分フィールドの値に対応して、 Bテーブル(勤務データ)から勤務区分(一意)に対応したデータを持って来るSQLを作成したところ、 Bテーブルに存在しない勤務区分を持つAテーブルのデータは結果に出ませんでした。 このように、結合したBテーブルに対応するデータが無い場合でも、Aテーブルに存在するデータを全て出したい場合、 何か方法はあるのでしょうか? 現在は一度Aテーブルから全てのデータをセレクトした後に、1件1件ループしてBテーブルからセレクトする方法をしていますがもっと簡潔にできるなら簡潔にしたいと思っています。 どなたかお答え頂けると幸いです。よろしくお願いします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

・両方のテーブルに同じデータが存在する場合(今の書き方) SELECT (省略) FROM Aテーブル INNER JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分; ・Aテーブルの全レコードを抽出し、Bテーブルに対応するデータがある場合は、Bテーブルからもデータを牽く場合(これがやりたいこと) SELECT (省略) FROM Aテーブル LEFT JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分; ・Bテーブルの全レコードを抽出し、Aテーブルに対応するデータがある場合は、Aテーブルからもデータを牽く場合(やりたいことの逆) SELECT (省略) FROM Aテーブル RIGHT JOIN Bテーブル ON Aテーブル.勤務区分 = Bテーブル.勤務区分;

noname#169207
質問者

お礼

とてもわかりやすい解説感謝します! 早速活用したいと思います。 ありがとうございました!

その他の回答 (1)

  • bodyshot
  • ベストアンサー率14% (46/326)
回答No.1

left join と inner join の違いについて調べてください。

noname#169207
質問者

お礼

Left JoinやLight Joinの存在は知っていましたが、 具体的にどういう物か知りませんでした。 まだまだ勉強不足です。 ありがとうございました。

関連するQ&A

専門家に質問してみよう