dポイントプレゼントキャンペーン実施中!

accessについて。
シートの中に列名name、列名friendnameがあります。
name,friendname
aaaa,bbbb
bbbb,cccc
cccc,aaaa
dddd,aaaa
eeee,bbbb
ffff,eeee
ほしいデータは
aaaa,bbbb,cccc
bbbb,cccc,aaaa
cccc,aaaa,bbbb
dddd,aaaa,bbbb
eeee,bbbb,cccc
ffff,eeee,bbbb
と友達の友達の名前がほしいのです。
SQLの書き方を教えてください。
よろしくお願いします。

A 回答 (3件)

テーブル名を「TF」と仮定します。


また、name に重複が無いものとします。

クエリのSQLビューで以下を記述します。

SELECT Q1.name, Q1.friendname, Q2.friendname AS friendname2
FROM TF AS Q1 LEFT JOIN TF AS Q2 ON Q1.friendname = Q2.name;


この表示結果は以下となります。

name  friendname  friendname2
aaaa  bbbb  cccc
bbbb  cccc  aaaa
cccc  aaaa  bbbb
dddd  aaaa  bbbb
eeee  bbbb  cccc
ffff  eeee  bbbb

この回答への補足

回答有難うございます。出来ました。嬉しいです。
一応友達の友達の友達のSQLを載せておきます。

SELECT T1.name,T1.friendname,T2.friendname,T3.friendname
FROM (friend T1 INNER JOIN friend T2
ON T1.friendname=T2.name ) INNER JOIN friend T3
ON T2.friendname=T3.name order by T1.name,T1.friendname,T2.friendname ;

合ってますでしょうか?
有難うございました。

補足日時:2012/09/29 20:29
    • good
    • 0

#1です



投稿直前に補足が見えたのですが、読んでません。


INNER JOIN が正しいのであれば、それはそうかもしれません。

LEFT JOIN としたのは、以下の様に friendname に記述された方が
name に居なかった時のことを考えただけでした。

元テーブルが以下だった時

name  friendname
aaaa  bbbb
bbbb  cccc
cccc  aaaa
dddd  gggg
eeee  bbbb
ffff  eeee

#1での表示結果は

name  friendname  friendname2
aaaa  bbbb  cccc
bbbb  cccc  aaaa
cccc  aaaa  bbbb
dddd  gggg  
eeee  bbbb  cccc
ffff  eeee  bbbb

となるだけです。
    • good
    • 0

SELECT T1.name,T1.friendname,T2.friendname


FROM テーブル名 T1 INNER JOIN テーブル名 T2
ON T1.friendname=T2.name ORDER BY 1
が一般的なSQL文です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!