2012-02-02 7 views
11

Я пытаюсь научиться присоединяться к нескольким столбцам из одной таблицы в один столбец из другой таблицы.Объединить несколько столбцов из одной таблицы в один столбец из другой таблицы

Это моя структура таблицы в своей простейшей форме:

команды

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   | 

Это мой текущий SQL, который присоединяется к trades.team_1 командам. 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?

Это будет означать, как trades.team_1 И trades.team_2 присоединились бы к trades.id

результаты, которые я хочу получить обратно будет:

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

ответ

31

Как это:

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

господи, 10 секунд друг от друга, и у нас было чуть и тот же ответ. =) – Crontab

+0

Все, кто ответил камнями. Серьезно, спасибо каждому из вас за ответ так быстро. Все ответы были похожи, и все будет делать трюк. Еще раз спасибо! – Critter

+0

благодарит за помощь – spr

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