2016-12-02 3 views
0

У меня есть таблица с шестью колоннами следующим
Home_Team | Home_Score | Away_Score | Away_Team | Home_Result | Away_ResultSelect Query MySql

Я хочу, чтобы выбрать выход HOME_TEAM записи выигрыша, Лоос & галстука матчи.

Я использовал следующий запрос, однако вместо подсчета отдельных итогов он показывает количество, если все совпадения в каждой категории.

select a.Home_Team, 
if(a.Home_Result = 'Win', count(a.Home_Result), 0) as Win, 
if(b.Home_Result = 'Loss', count(b.Home_Result), 0) as Loss 
from nsfa.result_main_bck as a 
join nsfa.result_main_bck as b 
on a.Home_Team = b.Home_Team 
where a.Home_Result = 'Win' and b.Home_Result = 'Loss' 
Group by 1 

Что может быть неправильно в этом коде

Я использую MySql, кстати.

С уважением

ответ

1

Вы можете не использовать что-то вроде этого https://stackoverflow.com/a/13075582/285190 не знаю, почему вы вступления в стол на его основе

Так что что-то вроде линий

select a.Home_Team, 
SUM(case when a.Home_Result = 'Win' then 1 else 0 end) as Win 
SUM(case when a.Home_Result = 'Loss' then 1 else 0 end) as Loss 
from nsfa.result_main_bck as a 
where a.Home_Result = 'Win' or a.Home_Result = 'Loss' 
Group By a.Home_Team 

(НЕ ПРОВЕРЕНО)

1
if(a.Home_Result = 'Win', count(a.Home_Result), 0) as Win, 

Это неправильный подход, а лет следует использовать CASE выражение наряду с агрегатной функцией, как SUM()

sum(case when a.Home_Result = 'Win' then 1 else 0 end) as Win 
+0

Мой дорогой Рахул, Спасибо за ваш ответ. Однако я получаю тот же результат с вашей предлагаемой командой. – KhawarAmeerMalik