SQL-запрос для подсчета количества категорий, к которым принадлежит контакт - PullRequest
0 голосов
/ 22 апреля 2011

Это была длинная неделя, и мой мозг измотан.

У меня есть база данных с тремя таблицами:

  • contacts
  • contacts_categories
  • contacts_categories_join

Существуют различные категории, и контакты могут принадлежать категории, многим категориям или ни одной. Структура contacts_categories_join это:

id INT UNSIGNED PRIMARY_KEY AUTO_INCREMENT
contact_id INT UNSIGNED
category_id INT

Довольно просто.

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

РЕДАКТИРОВАТЬ: Я вроде получил с оператором GROUP BY с использованием COUNT в столбце category_id, но, к сожалению, это не возвращает идентификаторы контактов, назначенные нулевым категориям.

1 Ответ

4 голосов
/ 22 апреля 2011
SELECT COUNT(*)
  FROM contacts_categories_join
 WHERE contact_id = ID

Где ID - заданный идентификатор.

Если вы спросили обо всех контактах (но это не очевидно из вашего вопроса), то:

   SELECT c.id,
          COUNT(j.contact_id)
     FROM contacts c
LEFT JOIN contacts_categories_join j ON j.contact_id = c.id
 GROUP BY c.id

(Предположим, что ваша таблица contact имеет поле id)

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