Я пишу веб-приложение скачек, и у меня есть страница статистики. То, что я пытаюсь сделать, показать сколько победителей, там с каждого года.
В настоящее время у меня есть это:
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2009`
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
Это работает как очарование и возвращает следующее
Horse Number | Total Winners
1|48
2|49
3|39
4|31
5|26
6|31
7|21
8|25
9|31
10|16
11|16
12|20
13|9
14|8
15|6
16|3
17|3
18|2
19|2
Я теперь составил таблицу на 2010, и я желаю, чтобы SQL возвратил что-то подобное, но я хочу, чтобы это искало за 2009 и 2010 одновременно. Я думал, что что-то вроде этого могло бы добиться цели.
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2009`
WHERE `Win $`>0
GROUP BY `Horse Number`
UNION
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM `races`.`2010`
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;
Но это просто возвращает дополнительные результаты у основания таблицы, таким образом, у меня теперь есть 2 строки для каждой лошади как это
Horse Number | Total Winners
1|48
2|49
3|39
4|31
5|26
6|31
7|21
8|25
9|31
10|16
11|16
12|20
13|9
14|8
15|6
16|3
17|3
18|2
19|2
1|0
2|0
3|0
4|0
5|0
6|0
7|0
8|0
9|0
10|0
11|0
12|0
13|0
14|0
15|0
16|0
17|0
18|0
19|0
Любой, который в состоянии помогать мне
Спасибо
Во-первых, я бы предложил иметь ОДИН столбец с дополнительной колонкой на год.
Во-вторых, при текущей структуре таблицы, вы можете сделать
SELECT `Horse Number`, Count(*) AS `Total Winners`
FROM (
SELECT * FROM `races`.`2009`
UNION ALL
SELECT * FROM `races`.`2010`
) all_races
WHERE `Win $`>0
GROUP BY `Horse Number`
ORDER BY Count(*) DESC;