• ベストアンサー

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テーブル目を参照できないということでしょうか?

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

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> 条件式で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.入社年度)

peca
質問者

お礼

教えていただいた方法で解決しました! 結合したテーブルを新しい名前で定義して、さらに結合するという感じ…ですよね。 ありがとうございました!!

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

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.入社年度) ではだめですか?

peca
質問者

お礼

ご回答いただき、ありがとうございます。 教えていただいた方法でもできました! []で囲っている形ははじめて見たので勉強になりました。

関連するQ&A