• ベストアンサー

SQL文をどう記述すれば良いか教えて下さい。

テーブルAが以下の様に在るとします。 連番(ユニークキー)/日付/社員コード/所属コード そして、社員コード、所属コードの名称が、テーブルBに登録されています。 区分/コード/名称 ここで、区分+コードでユニークキーとなっていて、区分=1は社員コード、区分=2は所属コードとなっています。 単純に、テーブルAから、ある日付を指定して、連番・社員コード・所属コードを取得する場合、SQL文は以下の様になると思います。 SELECT 連番,社員コード,所属コード FROM テーブルA WHERE 日付='20030401' この時、同時に、テーブルBから社員コードに対応する名称、及び所属コードに対応する名称を取得したい場合は、どの様に記述すれば良いのでしょうか?

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

なんのSQLなのか、は記述くださいね。 ACCESS2000版で動作確認済みです(Oracle9iもOKかな?) SELECT [テーブルA].[連番], [テーブルA].[日付], [テーブルA].[社員コード], [テーブルB].[名称] AS 氏名, テーブルB_1.名称 AS 所属 FROM (テーブルA INNER JOIN テーブルB ON [テーブルA].[社員コード]=[テーブルB].[コード]) INNER JOIN テーブルB AS テーブルB_1 ON [テーブルA].[所属コード]=テーブルB_1.コード WHERE ((([テーブルB].[区分])="1") And ((テーブルB_1.区分)="2"));

tng
質問者

お礼

早速の回答ありがとうございます。 ANo.#1、#2両方共動作確認しました。 結果が判ると成る程と思うのですが、自分でやっている時はどうにもいけません。 また勉強します。 ちなみに、SQLはACCESS2000・Oracle9i両方で実行可能、という条件です。

その他の回答 (1)

回答No.2

こういう場合なセルフジョインを使います。 テーブルB が仮想的に2つの表であると考えて、 3つのテーブルのジョインとして考えてください。 SELECT A.連番,A.社員コード,B1.名称, A.所属コード, B2.名称 FROM テーブルA A, テーブルB B1, テーブルB B2 WHERE A.社員コード=B1.コード AND B1.区分 = 1 AND A.所属コード = B2.コード and B2.区分 = 2 AND 日付='20030401' ;

tng
質問者

お礼

早速の回答ありがとうございます。 ANo.#1、#2両方共動作確認しました。 結果が判ると成る程と思うのですが、自分でやっている時はどうにもいけません。 また勉強します。 ちなみに、SQLはACCESS2000・Oracle9i両方で実行可能、という条件です。

関連するQ&A

専門家に質問してみよう