2012-02-02 12 views
11

ある表から複数の列を別の表の1つの列に結合する方法を学習しようとしています。別の表の1つの表から複数の列を結合する

これは最も単純な形で私のテーブル構造である:

チーム

id | team_name | 
1 | teamA | 
2 | teamB | 
3 | teamC | 
4 | teamD | 

取引

id | team_1 (FK to teams.id) | team_2 (FK to teams.id) | 
1 |   1    |    2   | 
2 |   3    |    4   | 

これはチームにtrades.team_1に参加する私の現在のSQLです。 id:

SELECT teams.team_name AS team1, teams.team_name AS team2, trades.team_1, trades.team_2 
FROM teams 
JOIN trades ON (trades.team_1 = teams.id); 

私の質問は、trades.team_2とtrades.idを結合する2番目の結合を作成する方法です。

これはtrades.team_1とtrades.team_2両方が、私は戻って取得したい

結果は以下のようになりtrades.idするために結合されるだろう意味になります。

team1 | team2 | team_1 | team_2 | 
teamA | teamB | 1  |  2 | 
teamC | teamD | 3  |  4 | 

答えて

31

:10秒間隔で

select t1.team_name as team1, t2.team_name as team2, t.team_1, t.team_2 
from trades t 
inner join teams t1 on t1.id = t.team_1 
inner join teams t2 on t2.id = t.team_2; 
+3

うわあ、私たちは同じ答えに近い気がありました。 =) – Crontab

+0

誰もが岩に答えました。真剣に、あなたのおかげで、すばやく反応しました。すべての答えは似ていて、すべてがそのトリックを行います。おかげさまで再びありがとう! – Critter

+0

あなたの助けを必要としてくれてありがとう – spr

2

あなたが参加する必要があり2回:

SELECT t1.team_name as team1, t2.team_name as team2, trades.team_t, trades.team_2 
FROM teams t1, teams t2, trades 
WHERE t1.id = trades.team_1 and t2.id = trades.team_2 
5

チームテーブルにもう一度参加してみてください。別の別名を使用してください:

このよう
SELECT 
    teams1.team_name AS team1, 
    teams2.team_name AS team2, 
    trades.team_1, 
    trades.team_2 
FROM trades 
JOIN teams AS teams1 ON trades.team_1 = teams1.id 
JOIN teams AS teams2 ON trades.team_2 = teams2.id 
9
SELECT t1.team_name AS team1, t2.team_name AS t2, tr.team_1, tr.team_2 
FROM trades tr 
INNER JOIN teams t1 ON t1.id = tr.team_1 
INNER JOIN teams t2 ON t2.id = tr.team_2 
関連する問題