2016-01-30 4 views
-1

У меня есть таблица со следующей структуройMySQL множественный COUNT() с различными условиями в одном запросе

id | season 
1 | 1 
2 | 1 
2 | 2 
3 | 2 
4 | 2 
5 | 1 

Я хочу запрос, чтобы вернуть значение счетчика в общих идентификаторов, таких как:

total_season2 | new | existing 
     3  | 2 | 1 

я могу сделать это с несколькими запросами или с помощью PHP, но я хочу, чтобы иметь результаты в одном запросе

+1

Что определяет строку как новую или существующую? – Tristan

+0

@Tristan Сезон. В этом случае я могу использовать WHERE season = 2 – user1795074

+0

Я все еще не понимаю, что представляют собой «новые» и «существующие»? В приведенных данных примера вы ожидаете 'new' = 2 и' existing' = 1. Я не вижу, как вы можете получить этот результат из приведенных вами данных примера. Что определяет строку как новую или существующую? Вы имеете в виду 'new', где' season == 1' и 'existing' где' season == 2'? – Tristan

ответ

0

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

SELECT 
(SELECT COUNT(id) FROM seasons s WHERE s.season = 2) as total_season2, 
(SELECT COUNT(id) FROM seasons s WHERE s.season = 2 AND (SELECT distinct COUNT(ss.id) FROM seasons ss WHERE ss.id = s.id) = 1) as new, 
(SELECT COUNT(id) FROM seasons s WHERE s.season = 2 AND (SELECT distinct COUNT(ss.id) FROM seasons ss WHERE ss.id = s.id) > 1) as existing 
Смежные вопросы