MySQL - объединение 2 таблиц с двумя общими идентификаторами - PullRequest
7 голосов
/ 17 декабря 2009

У меня есть 2 таблицы, из которых мне нужно получить информацию, и я хотел бы получить информацию одним запросом.

Ситуация такова:

table "matches" :

id
team_A_id
team_B_id

table "teams" :

id
name

Цель состоит в том, чтобы извлечь информацию из таблицы «матчей» (футбольных матчей) и объединить информацию с таблицей «команды». Мне это нужно, потому что у моего провайдера веб-услуг нет данных xml на моем языке (португальском), и поэтому мне нужно предложить своему клиенту возможность перевести некоторые названия команд на португальский, в противном случае я бы добавил названия команд непосредственно на таблица "спичек". Проблема в том, что мне нужно присоединиться к 2 таблицам с 2 идентификаторами. Я знаю, как объединять таблицы с одним общим идентификатором, но не могу понять, как это сделать с двумя идентификаторами, и как информация из двух команд, участвующих в каждом матче, не повреждена.

Возможно ли это? Или мне нужно создавать отдельные запросы?

Ответы [ 3 ]

10 голосов
/ 17 декабря 2009
select match.*, teama.name, teamb.name
from matches as match
inner join teams as teama on teama.id = match.team_A_id
inner join teams as teamb on teamb.id = match.team_B_id

будет работать в SQL Server и, вероятно, также в MySQL.

6 голосов
/ 17 декабря 2009

Включите таблицу команд во второй раз (с другим псевдонимом) и обработайте запрос как находящийся между тремя таблицами:

SELECT *
FROM matches m
JOIN teams t1 ON m.team_A_id = t1.id
JOIN teams t2 ON m.team_B_id = t2.id
3 голосов
/ 17 декабря 2009
SELECT *
  FROM matches m, team t1, team t2 
 WHERE m.team_A_id = t1.id
   AND m.team_B_id = t2.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...