- ベストアンサー
SQLのSELECT文で効率的に担当名を抽出する方法は?
- VB5.0のDBはSqlServer2000を使用している場合、次のSQL文でTANTO_TABLEからA_TABLEの担当コード1と担当コード2の担当名を抽出することができます。
- しかし、このSQLでは担当コード1のみが抽出されます。担当コード1と2の担当名を効率良く抽出する方法を教えてください。
- お願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こういうことでは? SELECT (select tb.担当名 from TANTO_TABLE tb where tb.担当コード=ta.担当コード1) as 担当名1, (select tc.担当名 from TANTO_TABLE tc where tc.担当コード=ta.担当コード2) as 担当名2 FROM A_TABLE ta; ベタだけど (^^;
その他の回答 (3)
- nonchi
- ベストアンサー率43% (16/37)
こういうこと? SELECT N1.担当名 AS 担当者氏名1, N2.担当名 AS 担当者氏名2 FROM TANTO_TABLE N1 LEFT OUTER JOIN TANTO_TABLE N2 ON (A_TABLE.担当コード2 = N2.担当コード) WHERE A_TABLE.担当コード1 = N1.TANTO_TABLE.担当コード
お礼
参考にします。ありがとうございました。
Inner Join, Left Join, Right Join に関しては、SQL Server 2000でもJetでも、ほぼおなじ文法が使えますので、Accessのクエリーデザイン(QBE)でも使ってご希望の形を作ってください。 それを、クエリーアナライザなり、エンタープライズマネージャなりのツールでデバッグし、必要な箇所を手直ししてコピペすればOKです。 ・・・失礼ですが、こんな程度のこともできないのに、よく給料がもらえますね。(感心)
お礼
ご指導ありがとうございました。
- teiou68k
- ベストアンサー率28% (202/721)
ごめんなさい。何がしたいのかよくわかりません。 1.A_TABLEの構成は? いくつかフィールドがあり、その中の二つが「担当コード1」と 「担当コード2」と言うことですか? 2.A_TABLEの仕様 上記が私の思惑通りだったとして、1と2の違いは? 3.SELECTしたい内容 取ってきたいのが「担当名」と言うことはわかりましたが、いったい どういう意図で担当名を取りたいのでしょう? 例えば・・・(等ピッチで見てください) A_TABLE TANTO_TABLE +--------------+--------------+ +--------+------------+ | 担当コード1 | 担当コード2 | | 担当名 | 担当コード | +--------------+--------------+ +--------+------------+ | 1 | 3 | | 田中 | 1 | | 2 | 1 | | 山本 | 2 | | 3 | 2 | | 鈴木 | 3 | | 4 | 4 | | 原田 | 4 | という状態だったとして、あなたがしたいのはどういう事ですか? 田中 鈴木 山本 田中 鈴木 山本 原田 原田 を返してほしいのですか?
補足
説明不足だったみたいです。ごめんなさい。 1.その通りです。 項目は他にもありますが、今回必要なもののみ記入しました。 やりたい事はteiou68kさんのおっしゃるとおりです。 TANTO_TABLEは担当コードがキーで担当名が項目です。 A_TABLEに担当コード1と2があり、TANTO_TABLEおよびA_TABLEからSQL実行し、その結果として担当名1と2を1RECとして取得したいのです。 よろしくお願いいたします。m(__)m
お礼
レスが遅れて申し訳ありません。 うまく行きました。 ありがとう御座いました。