2016-04-24 4 views
1

Я пробовал множество SQL-соединений и искал stackoverflow, и безрезультатно.SQL SELECT Заявление в справочной таблице дважды

Фактически, у меня есть база данных бейсбола с двумя таблицами. Таблица «команд» (с именем team_id и team_name) и таблица «игр» (когда одна команда играет другую, когда, где и т. Д.).

Я хочу создать SQL-запрос с учетом значения teams.team_name, запрос возвращает последние 10 игр, которые играют данная команда (в «доме» на своем стадионе или «прочь» на стадионе конкурентов) и имя (teams.team_name) обеих команд в данной игре на основе соответствующей командыs.team_id в таблице игр.

Таблицы:

КОМАНДЫ

ROW # 1 (team_id) 1, (TEAM_NAME) "Янки"
ROW # 2 (team_id) 2, (TEAM_NAME) "LA Dodgers"
ROW # 2 (team_id) 3, (TEAM_NAME) "Red Sox"
...

ИГРЫ

ROW # 1 (game_id) 1, (home_team_id) 1, (away_team_id) 2, (date_played) ...
ROW # 2 (game_id) 2, (home_team_id) 3, (away_team_id) 2, (date_played) ...
ROW # 3 (game_id) 3, (home_team_id) 2, (away_team_id) 3, (date_played) ...

SQL-запрос, я хотел бы вернуться бы:

"Домашняя команда" ----- "Команда в гостях" ---- "Дата игры"
Янки ----------- LA Доджерс ------ ##/##/####
Red Sox ----------- LA Доджерс-- ---- ##/##/####
LA Dodgers ------ Red Sox ---------- ##/##/####

Этот запрос практически получает меня выход я требую, но я хочу «TEAM_NAME» из таблицы «команд», но добавил, что к ВЫБРАТЬ создает проблематичных OUTPUT

SELECT games.home_team_id, 
    games.away_team_id 
FROM games, 
    teams 
WHERE games.home_team_id = teams.team_id 
    AND teams.team_name = "Yankees" 
    OR games.away_team_id = teams.team_id 
    AND teams.team_name = "Yankees" 
ORDER BY games.date_played DESC LIMIT 0, 10; 

ответ

3

в общем, если вы хотите использовать одну и ту же таблицу несколько раз в одном запросе, предположительно в двух разных вариантах, вы даете вашей таблице псевдоним - это имя, которое вы перечисляете сразу после имени таблицы в предложении о FROM или JOIN:

SELECT h.team_name, a.team_name, g.date_played 
FROM Games g 
JOIN Teams h ON h.team_id = g.home_team_id 
JOIN Teams a ON a.team_id = g.away_team_id 
WHERE ... 

g, h и a псевдонимы для соответствующих таблиц. Обратите внимание на использование синтаксиса JOIN вместо перечисления всех таблиц в предложении FROM и ограничения их в предложении WHERE. Это гораздо более чистый синтаксис, который должен использоваться в запросах с объединениями.

+0

Выполнено - еще раз спасибо. –

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