プロが教える店舗&オフィスのセキュリティ対策術

SQLについての質問です。

Join句を使ってテーブルを結合しています。
Aテーブル(社員データ)に存在する勤務区分フィールドの値に対応して、
Bテーブル(勤務データ)から勤務区分(一意)に対応したデータを持って来るSQLを作成したところ、
Bテーブルに存在しない勤務区分を持つAテーブルのデータは結果に出ませんでした。

このように、結合したBテーブルに対応するデータが無い場合でも、Aテーブルに存在するデータを全て出したい場合、
何か方法はあるのでしょうか?

現在は一度Aテーブルから全てのデータをセレクトした後に、1件1件ループしてBテーブルからセレクトする方法をしていますがもっと簡潔にできるなら簡潔にしたいと思っています。
どなたかお答え頂けると幸いです。よろしくお願いします。

A 回答 (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テーブル.勤務区分;
    • good
    • 4
この回答へのお礼

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

お礼日時:2008/08/27 17:03

left join



inner join
の違いについて調べてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/08/27 17:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A