Объединить несколько столбцов из одной таблицы в один столбец из другой таблицы - PullRequest
12 голосов
/ 02 февраля 2012

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

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

команда

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

1010 * торгов *

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

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

Ответы [ 4 ]

42 голосов
/ 02 февраля 2012

Как это:

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;
11 голосов
/ 02 февраля 2012
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
5 голосов
/ 02 февраля 2012

Попробуйте снова присоединиться к таблице команд, но используйте два разных псевдонима:

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
2 голосов
/ 02 февраля 2012

Вам нужно присоединиться дважды:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...