ショボ短歌会

http://oshiete.goo.ne.jp/qa/7944235.html
の件に引き続きどうSQL文を書いてよいかわからず困っています。

create table team(team_id int not null primary key,team_name varchar(30),year int(4), leagueid int(32) );
insert into team values(1,"A",2012,1),(2,"B",2012,1),(3,"C",2012,1),(4,"D",2012,1),(5,"A",2012,2),(6,"B",2012,2),(7,"C",2012,2),(8,"D",2012,2),(9,"A",2011,1),(10,"B",2011,1),(11,"C",2011,1),(12,"D",2011,1);
create table taisen(id int not null primary key auto_increment,hometeam int,homepoint int,awayteam int,awaypoint int);
insert into taisen (hometeam,homepoint,awayteam,awaypoint)
values(1,3,2,2),(3,1,4,0),(1,0,3,2),(2,2,4,2),(1,1,4,2),(2,0,3,0),(2,1,1,2),(4,1,3,3),(3,5,1,2),(5,3,6,3),(5,1,7,1),(7,1,8,1),(9,1,10,1),(11,1,12,3);

とあり、
taisen.hometeamとteam.idとtaisen.awayteamとteam.idを結合し、taisenテーブルにteamのyear、leagueid、team_nameが表示されればと思っています。
通常のjoinであればできるのですが、どのようにsql文をかけばよいのかわからず困っています。

taisen.hometeamとteam.idとtaisen.awayteamとteam.idを結合したときに
| taisen.hometeam | ホームチーム名 | taisen.homepoint | taisen.awayteam | アウェイチーム名 | taisen.awaypoint | team.year | team.leagueid
で結果がとれるようにしたいのですが、どのようにしたらよろしいでしょうか?

A 回答 (1件)

taisenに対してteamを2回joinしてやればよいのでは?



select
taisen.hometeam
,t1.team_name as hometeam_name
,taisen.homepoint
,taisen.awayteam
,t2.team_name as awayteam_name
,taisen.awaypoint
,t1.year
,t1.leagueid
from taisen
left join team as t1 on
t1.team_id=taisen.hometeam
left join team as t2 on
t2.team_id=taisen.awayteam

ちなみにyearとleagueidはホームチームもしくはアウェイチームのどちらかの
ものを拾うしかありません。
若干正規化の仕方がおかしいですね。
    • good
    • 0
この回答へのお礼

yambejp様

度々有難う御座います。
joinの連続でできたんですね。
自分でやったときはなかなかうまくできなかったんです。

本当に有難う御座いました。

お礼日時:2013/02/21 21:20

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