• ベストアンサー

抽出結果を元にさらに抽出する方法

先程こちらで質問させていただきました。 http://oshiete1.goo.ne.jp/qa5243225.html ちょっとややこしくなってしまったので簡単な結合(inner join)の使い方等分かるサイトはありませんか。 宜しくお願い致します。

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

  • ベストアンサー
回答No.1

イメージとしては [ユーザー] ┌──────┬─────┬────────┐ │ユーザー名 |紹介者名 |登録時刻    | ├──────┼─────┼────────┤ │山田    │(null)  |2009/08/01 12:23| │佐藤    │山田   |2009/08/02 23:56| │吉田    │佐藤   |2009/08/15 15:31| │田中    │山田   |2009/08/28 09:15| └──────┴─────┴────────┘ っていうテーブルがあるときに、 ┌──────┬─────┬────────┬───────┬────────┐ │ユーザー名 |紹介者名 |登録時刻    |紹介者の紹介者|紹介者の登録時刻| ├──────┼─────┼────────┼───────┼────────┤ │山田    │(null)  |2009/08/01 12:23|(null)    |(null)     | │佐藤    │山田   |2009/08/02 23:56|(null)    |2009/08/01 12:23| │吉田    │佐藤   |2009/08/15 15:31|山田     |2009/08/02 23:56| │田中    │山田   |2009/08/28 09:15|(null)    |2009/08/01 12:23| └──────┴─────┴────────┴───────┴────────┘ こんなのがほしいってことですかね? 上記のイメージで正しければ、 質問のURLに掲載された質問の答えは select   A.ユーザー名   ,A.紹介者名   ,A.登録時刻   ,B.紹介者名 as '紹介者の紹介者'   ,B.登録時刻 as '紹介者の登録時刻' from   ユーザー      A   left join ユーザー B   on     B.ユーザー名 = A.紹介者名 ではないでしょうか。 from   ユーザー      A   left join ユーザー B   on     B.ユーザー名 = A.紹介者名 この部分を、1行で書き直してちょっと加工すると   (ユーザー A) left join (ユーザー B) となります。 left join の意味としては、 『左側のテーブルのレコードは全部表示しつつ、  右側のテーブルは条件(on)にあうレコードがあればくっつける』 といった感じです。 とりあえず、想定しているイメージが異なるかもしれないので いったんここで回答をきっておきますね^^

iinnffoo
質問者

お礼

おはよう御座います! まさにこう言う感じでした。 色んなサイトを見てたんですけどこう言う感じに分かりやく書いてるところ無かったんです。。。 一年間ずっと悩まされておりました。 (on)の意味もお教えてくださり有り難う御座います。 とてもとても参考になりました。 これは応用みたいな感じにどんどんくっつけて抽出していく事も出来たりもするかもしれないですね! ちょっと説明不足ですみませんでした。 早速作ってみたいと思います!(*^_^*)