2014-12-08 5 views
0

Im новый здесь и я застрял в запросе. Подводя итог, у нас есть таблица «Команды», которая имеет два столбца, идентификатор команды и имя. Затем у нас есть еще одна таблица «Матчи», которая имеет, помимо прочего, matchID, localTeamID, visitorTeamID, localTeamGoals, visitorTeamGoals .... и т. Д. И т. Д. Таким образом, для запроса требуется следующее: «Верните имя команд, указав количество совпадений, воспроизводимых как локальное, и количество совпадений, которые были сыграны в качестве посетителя, как два разных столбца, в одном запросе, не допускается использование курсоров ».Как суммировать/подсчитывать два разных столбца в одном запросе SQL?

Проблема в том, что вам нужны имена команд, поэтому, когда вы выполняете соединение между командами и командами, скажем, localTeamID = teamID, вы получаете только локальные совпадения ... так, чтобы получить посетителей так же ... вы присоединитесь снова тот же TeamID с visitorTeamID .... но есть моя проблема, для каждого локального матча, я получаю соответствует всем посетителям ...

Как я могу получить правильный результат, как

Team   LocalMatches  VisitorMatches 
Real Madrid    4     5 
Manchester    5     4 

Обратите внимание, что «суммы» или «подсчеты» в запросе могут отличаться. Спасибо, я надеюсь, что кто-нибудь может мне помочь.

+0

Обратите внимание, что для каждой строки в таблице спичек, вы можете только увидеть, какая команда играла против другой команды (местный против посетителя), поэтому, чтобы узнать, сколько матчей команда имеет как локальный, так и посетитель, вам нужно подсчитать/суммировать каждую строку, которую вы найдете для каждой команды, как локальный, так и посетитель ... но ее сложно подсчитать, когда вы найдете строку с идентификатором посетителя этой команды, вы не получите местный идентификатор и наоборот .... – Hessiann

ответ

1

Вы можете использовать подзапросы, как это:

select Name as Team 
    ,(select count(*) from Matches where localTeamID = teamID) as LocalMatches 
    ,(select count(*) from Matches where visitorTeamID = teamID) as VisitorMatches 
from Teams