• 締切済み

同じフィールドから2種類の値を取得するSELECT文

SELECT文の作成で行き詰ってしまって困っています。 タイトルのニュアンスが適当じゃないのですが、 MasterUserとTableParentの2つのテーブルがあり MasterUser |user_no|use_name| | 0 |山田太郎| | 1 |山田次朗| TableParent |rec_no|father|son| | 0 | 0 | 1 | TableParent.rec_no:ユニークな数字 TableParent.father:=MasterUser.user_no TableParent.son :=MasterUser.user_no という条件で |rec_no| father | son | | 0 |山田太郎|山田次朗| のような結果を1回で取得するSELECT文は作成可能でしょうか? 自分でやってみた感じ出来ない感じがしました。 正規化を学び始めたばかりなので、テーブルの作成から違う可能性も ありそうなんですが、何か参考になりそうなサイトがあったら 教えて頂けると嬉しいです。 よろしくおねがいします

みんなの回答

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

「階層問い合わせ」っぽい話ですね。 SQL Server2005だと「階層問い合わせ」はできるみたいです。 http://msdn.microsoft.com/ja-jp/library/ms175972.aspx >J. 複数のアンカー メンバと再帰メンバを使用する 設計的には「階層問い合わせ」を調べてみてください。 fatherがいるならmotherがいると思うので。 「階層問い合わせ」なら家系をさかのぼることも可能ですよ。

ei_non
質問者

お礼

現状だと参考に教えて頂いたサイトの様にソース上でやってました。 けど、ストアドプロシージャ使うのは全く頭になかったです。 同じサイト内を見てたんですが、SQLServer内で完結するように いろいろとやり方があるんですね。 もっと勉強しないとダメですね。 有用なサイトを教えていただきありがとうございました。

  • yamada404
  • ベストアンサー率56% (9/16)
回答No.1

これでどうですか select t1. rec_no , t2. user_name as father , t3. user_name as son from TableParent t1 left outer join MasterUser t2 on t2. user_no = t1. father left outer join MasterUser t3 on t3. user_no = t1. son

ei_non
質問者

お礼

ど真ん中で出来ました。 LeftJoinとか良く分からなかったので逃げてたのが いけなかったみたいですね。 諦めかけてたのに、一発でできちゃうなんてすごいです。 自分の勉強不足を痛感しました 素早い回答ありがとうございました。

関連するQ&A