2014-02-18 4 views
0

У меня есть таблица футбольных матчей в следующем формате.возвращение нескольких счетчиков из одной таблицы

date date primary key 
homescore int(4) 
awayscore int(4) 

Данные хранятся в следующем формате

DATE  | HOMESCORE | AWAYSCORE 
------------------------------------------ 
01-01-2014 |  1  |  0 
08-01-2014 |  2  |  1 
15-01-2014 |  1  |  1 
22-01-2014 |  3  |  2 
29-01-2014 |  0  |  0 
06-02-2014 |  1  |  3 

И так далее ...

Я хотел бы запустить один запрос, чтобы вернуть выиграна, потерянные и нарисованные итоги.

select count(*) as won from fixtures where homescore > awayscore; 
select count(*) as lostfrom fixtures where homescore < awayscore; 
select count(*) as drawnfrom fixtures where homescore = awayscore; 

В результате этого один запрос будет выглядеть примерно так ...

Won  Lost  Drawn 
3  1   2 

Пожалуйста, может кто-то дать мне некоторую помощь.

ответ

4
SELECT SUM(homescore > awayscore) AS won, 
    SUM(homescore < awayscore) AS lost, 
    SUM(homescore = awayscore) AS tie 
FROM ... 

Булевы результаты >, < и = получите автоматически преобразуются в целое 0 или 1, по MySQL, которые затем могут быть подведены.

+0

Блестящий ответ и именно то, что я хотел. Спасибо. – thonnor

2

SQL Fiddle:

SELECT SUM(CASE WHEN homescore > awayscore THEN 1 ELSE 0 END) WonCount, 
     SUM(CASE WHEN homescore < awayscore THEN 1 ELSE 0 END) LostCount, 
     SUM(CASE WHEN homescore = awayscore THEN 1 ELSE 0 END) TieCount 
FROM fixtures 
0

У меня была такая же проблема, и на основе этих ответов я соединили SQL скрипку, так что вы можете попробовать это для себя.

http://sqlfiddle.com/#!2/066ec2/1

Это надуманный пример «родителей» и «детей», но он демонстрирует акт получения «Статистика» для объединяемых таблиц. Спасибо за ответ Marc B!

+1

Если вы хотите, разместите соответствующие части в своем ответе, как и другие ответы. Это помогает людям, которые находят этот ответ позже. благодаря – Machavity

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