MySQL - выбрать количество (*), сгруппировать, но сохранить разделение - PullRequest
1 голос
/ 21 октября 2009

У меня есть таблица записи просмотров программ. Каждая программа может иметь два разных типа (1 = видео, 2 = аудио)

Моя таблица для записи просмотров:

TABLE views
view_id
user_agent
created_at
type
program_id (which related to table programs)

Мой текущий вызов MySQL:

SELECT COUNT(*) as views, 
       `mp`.`title`, 
       `mp`.`program_date` as date 
FROM (`applications_media_views` as v) 
JOIN `media_programs` as mp ON `v`.`program_id` = `mp`.`program_id` 
GROUP BY `v`.`program_id` 
ORDER BY `views` desc

Беда в том, что это не разделяет типы. Мне нужно сообщать о представлениях по program_id, но я должен хранить типы отдельно.

Чего мне не хватает?

Ответы [ 5 ]

2 голосов
/ 21 октября 2009

Вы можете группировать более чем по одной вещи. Попробуйте это:

GROUP BY `v`.`program_id`, `v`.`type`
1 голос
/ 21 октября 2009

Вам необходимо добавить v.type в оба предложения SELECT и GROUP BY:

SELECT COUNT(*) as views, 
       `mp`.`title`, 
       `mp`.`program_date` as date,
       v.type 
FROM (`applications_media_views` as v) 
JOIN `media_programs` as mp ON `v`.`program_id` = `mp`.`program_id` 
GROUP BY `v`.`program_id`, v.type 
ORDER BY `views` desc

Вы получите строку вывода для каждой комбинации программы / типа.

1 голос
/ 21 октября 2009

Вам нужно "сгруппировать по идентификатору программы, типу" и выбрать тип в своем запросе?

Если нет, можете ли вы показать пример вывода запроса, который работает так, как вы хотите?

0 голосов
/ 21 октября 2009

Ответы выше все хорошо. Но мне кажется, что вы также должны поместить "title" и "program_date" в вашу группу по выражению, потому что они не присутствуют в статистической функции.

0 голосов
/ 21 октября 2009

Вы должны добавить v.type в предложение group by, а также добавить v.type в предложение select, чтобы вы могли видеть, какой набор относится к какому типу программы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...