PHP / MySQL - подсчет элементов в запросе - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть следующие результаты для моей таблицы базы данных:

enter image description here

Запрос:

SELECT 
service_titles.user_id, service_titles.slide_id, service_titles.name as title_name ,service_names.name as service_name 
FROM service_names 
INNER JOIN service_titles ON service_names.title_id = service_titles.id

Итак, что должно произойти:

  • Если у пользователя есть 2 уникальных названия сервисов, то максимальное количество имен сервисов для этого заголовка будет 6
  • Если у пользователя есть 1 служебный заголовок, максимальное количество служебных имен для этого заголовка будет 16

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

Спасибо за любую помощь!

Ответы [ 3 ]

1 голос
/ 13 февраля 2012
SELECT COUNT(DISTINCT service_titles.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

Это даст вам количество различных названий title_name для каждой комбинации user_id / slide_id.

SELECT COUNT(DISTINCT service_names.name)
FROM service_names
INNER JOIN service_titles ON service_names.title_id = service_titles.id
GROUP BY service_titles.user_id, service_titles.slide_id

... и это число различных имен service_name для одного и того же.Если вы хотите оба в одном запросе, вы можете поместить оба COUNT вместе, так как вы используете один и тот же GROUP BY независимо.

0 голосов
/ 13 февраля 2012

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

SELECT user_id, COUNT(DISTINCT name)
FROM service_titles
GROUP BY user_id
0 голосов
/ 13 февраля 2012

Вы можете использовать оператор CASE в своем запросе, чтобы изменить максимальное количество имен_служб.

См. Справочник по оператору MySQL CASE

Для этого в самом SQLбудет быстрее, чем оценка в PHP.

...