- 締切済み
同じフィールドから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文は作成可能でしょうか? 自分でやってみた感じ出来ない感じがしました。 正規化を学び始めたばかりなので、テーブルの作成から違う可能性も ありそうなんですが、何か参考になりそうなサイトがあったら 教えて頂けると嬉しいです。 よろしくおねがいします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 3rd_001
- ベストアンサー率66% (115/174)
「階層問い合わせ」っぽい話ですね。 SQL Server2005だと「階層問い合わせ」はできるみたいです。 http://msdn.microsoft.com/ja-jp/library/ms175972.aspx >J. 複数のアンカー メンバと再帰メンバを使用する 設計的には「階層問い合わせ」を調べてみてください。 fatherがいるならmotherがいると思うので。 「階層問い合わせ」なら家系をさかのぼることも可能ですよ。
- yamada404
- ベストアンサー率56% (9/16)
これでどうですか 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
お礼
ど真ん中で出来ました。 LeftJoinとか良く分からなかったので逃げてたのが いけなかったみたいですね。 諦めかけてたのに、一発でできちゃうなんてすごいです。 自分の勉強不足を痛感しました 素早い回答ありがとうございました。
お礼
現状だと参考に教えて頂いたサイトの様にソース上でやってました。 けど、ストアドプロシージャ使うのは全く頭になかったです。 同じサイト内を見てたんですが、SQLServer内で完結するように いろいろとやり方があるんですね。 もっと勉強しないとダメですね。 有用なサイトを教えていただきありがとうございました。