2017-02-21 2 views
-1

У меня есть таблица команд каждый с идентификационным номером, как это ...INNER JOIN таблицы замены ID значения

TEAM ID  TEAM 
1   Maitland 
2   Orlando 
3   Winter Park 
4   Lake Mary 

так далее и так далее

И у меня есть таблица, в которой перечислены вне график, используя только идентификационные номера, как так ...

TEAM ID  Game1  Game2 Game3 
1   2   3  4 

можно ли INNER JOIN тех вершин к таблицам, чтобы создать таблицу, которая заменяет идентификационные номера с правильным именем команды, как это ...

TEAM  Game1  Game2   Game3 
Maitland Orlando Winter Park Lake Mary 
+1

Да, вы должны присоединиться к таблице команд один раз для каждой игры. Таким образом, 3 присоединяется к таблице таблиц команд таблицы расписания. Или вы можете реструктурировать данные, чтобы в командах совпадений 2 команды и отдельных полях была указана игра, тогда вам придется поворачивать данные игры. Будет ли в вашей таблице MATCHES только 3 игры? – xQbert

+0

Нет, у каждой команды будет 10 игр. –

+0

Учитывая этот дизайн, вам может быть лучше просто создать процедуру, которая выполняет поиск каждого имени. таким образом вы придерживаетесь простого соединения и просто называете процедуру для каждой команды и игры. – xQbert

ответ

0
select t1.name as TEAM_ID, t2.name as Game1, t3.name as Game2, t4.name as Game3 
from schedule s 
    inner join teams t1 on t1.team_id = s.team_id 
    inner join teams t2 on t2.team_id = s.Game1 
    inner join teams t3 on t3.team_id = s.Game2 
    inner join teams t4 on t4.team_id = s.Game3 
    ... 
    ... 
    inner join teams t10 on t10.team_id = s.Game9; 
0

У вас есть 1: отношение п команды игры.

Если вы просто хранить его в нормальной форме - TeamID, игры - заказана в некотором роде, как, по дате:

CREATE TABLE schedules (
    teamid INT, 
    playing_with INT, 
    order DATE 

    FOREIGN KEY (teamid) 
     REFERENCES teams(teamid)   
); 

тогда вы будете иметь все это в двух присоединяется:

SELECT t.teamname AS team, t1.teamname AS PlayWithTeam 
FROM schedules s 
    INNER JOIN teams t ON s.teamid=t.teamid 
    INNER JOIN teams t1 ON s.playing_with=t1.teamid 
ORDER BY s.teamid, s.order; 

Here's the Fiddle, check it.

Смежные вопросы