2012-02-22 2 views
0

У меня вопрос о запросе в MySql через PHPmyadmin. У меня есть база данных, содержащая несколько таблиц. Одна из этих таблиц содержит информацию о матче спортивной игры. В этой таблице «Игра» есть столбцы «gameid», «pouleid», «hometeamnumber», «awayteamnumber», «gamedate».SQL-запрос - как объединить разные поисковые запросы

Затем у меня есть другая таблица «Команда», в которой хранятся данные команды. В этой таблице есть только три столбца: «teamnumber», «clubname», «teamname».

Теперь я хочу создать sql-запрос в этой базе данных. В результате я хочу отобразить «gameid», «homeclubname», «hometeamname», «awayclubname», «awayteamname» и «gamedate». Чтобы получить homeclubname и hometeamname, мне нужно получить «hometeamnumber» из таблицы «Игра» и сравнить его с «номером команды» в таблице «Команда». То же самое касается имени awayclubname и awayname.

Но я могу только получить только homeclub/team или awayclub/team в моем запросе. Поэтому я использую следующий SQL-оператор:

“SELECT gameid, pouleid, hometeamnumber, clubname, teamname, awayteamnumber, gamedate 
FROM Game, Team 
WHERE Game.hometeamnumber = Team.teamnumber” 

Но это только даст мне homeclubname и hometeamname. Идеально, мне также хотелось бы, чтобы имя и имя away. Но чтобы получить эту информацию, мне пришлось бы посмотреть в таблицу Team. Очевидно, что следующий запрос не будет работать.

“SELECT gameid, pouleid, hometeamnumber, clubname, teamname, awayteamnumber, gamedate 
FROM Game, Team 
WHERE Game.hometeamnumber = Team.teamnumber 
AND Game.awayteamnumber = Team.teamnumber” 

Как это сделать в одном sql-запросе?

+1

Изменение 'AND' на' OR' – ManseUK

+0

Изменение AND на ИЛИ не будет работать, так как мне нужна команда как для дома, так и для гостей. Использование JOIN - правильное решение. –

ответ

0

Ниже будет получить данные команды для обеих команд в конкретной игре

SELECT 
    Team.* 
FROM Game 
INNER JOIN Team 
ON Team.teamnumber IN (Game.hometeamnumber,Game.awayteamnumber) 
WHERE Game.gameid = 123 

В зависимости от того, что вы производите есть множество изменений, которые могут быть сделаны, выше будет подходящим при отображении информации об одной игре. При попытке отобразить большую таблицу результатов есть другие методы, которые могут быть использованы, поэтому, пожалуйста, уточните вопрос, если вам нужна дополнительная информация.

0

Вы должны иметь возможность использовать соединения для возврата нужных данных.

Просто Eyeballing быстро говорит что-то вроде:

SELECT gameid, pouleid, 
hometeamnumber, #HomeTeam.clubname as HomeTeamClubName, #HomeTeam.teamname as HomeTeamName, 
awayteamnumber, #AwayTeam.clubname as AwayTeamClubName, #AwayTeam.teamname as AwayTeamName, 
gamedate 
FROM Game 
INNER JOIN Team as #HomeTeam 
on hometeamnumber = #HomeTeam.teamnumber 
INNER JOIN Team as #AwayTeam 
on awayteamnumber = #AwayTeam.teamnumber 

Вы должны быть в состоянии изменить/улучшить это для ваших конкретных потребностей.

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