- ベストアンサー
SQL 外部結合
Access2003でSQLをかいています。 以下のように書いているのですが、 「結合式がサポートされていません」というエラーが発生します。 対応策をご存知の方、お教えいただけますでしょうか。 使用するテーブルは以下の3つです。 ・社員テーブル ・所属テーブル ・判定テーブル それぞれのテーブルの項目は以下のとおりです。 ▼ 社員テーブル ------------------- 個人No 入社年度 ▼ 所属テーブル ------------------- 個人No 所属コード ▼ 判定テーブル ------------------- 所属コード 入社年度 判定フラグ 下記のようなSQLを書いています。 --------------------------------------------------------------------- SELECT A.個人No, C.判定フラグ FROM (社員マスタ A LEFT JOIN 所属テーブル B ON (A.個人No = B.個人No)) LEFT JOIN 判定テーブル C ON (B.所属コード = C.所属コード AND A.入社年度 = C.入社年度) --------------------------------------------------------------------- 最終行の「AND A.入社年度 = C.入社年度」がなければ、SQLは実行できますが 入社年度で条件を絞れないので正しい結果になりません。 LEFT JOIN 句は3テーブル目の条件式で1テーブル目を参照できないということでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 条件式で1テーブル目を参照できないということでしょうか? については分かりません。 以下のように変形して、C と結ぶのを 1つにしてみるのはどうでしょうか。 (未検証) SELECT TA.個人No, C.判定フラグ FROM (SELECT A.*, B.所属コード FROM 社員マスタ AS A LEFT JOIN 所属テーブル AS B ON (A.個人No = B.個人No)) AS TA LEFT JOIN 判定テーブル AS C ON (TA.所属コード = C.所属コード AND TA.入社年度 = C.入社年度)
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
SELECT D.個人No, C.判定フラグ FROM [select a.個人No, a.入社年度, b.所属コード from 社員マスタ A LEFT JOIN 所属テーブル B ON (A.個人No = B.個人No)]. as D LEFT JOIN 判定テーブル C ON (D.所属コード = C.所属コード AND D.入社年度 = C.入社年度) ではだめですか?
お礼
ご回答いただき、ありがとうございます。 教えていただいた方法でもできました! []で囲っている形ははじめて見たので勉強になりました。
お礼
教えていただいた方法で解決しました! 結合したテーブルを新しい名前で定義して、さらに結合するという感じ…ですよね。 ありがとうございました!!