как считать NULL категории в одном вопросе SQL - PullRequest
0 голосов
/ 19 марта 2010

У меня есть приложение для блога, в котором сообщение принадлежит категории и категории имеет много сообщений

Сообщение может иметь категорию или нет - в последнем случае в поле Post.category_id присутствует значение NULL.

Теперь я хотел бы иметь следующий счетчик категорий с одним SQL-запросом

category|post_count
--------------
PHP | 2
JavaScript | 4
SomeOtherCat | 1
NULL | 3

Подсказка в том, что я также хочу считать сообщения без категории (NULL строка выше). Это возможно с одним запросом SQL?

Ответы [ 3 ]

1 голос
/ 19 марта 2010
SELECT
  c.CategoryName,
  COUNT(*)
FROM
  Posts p
    left join
  Category c
    on
      p.Category_id = c.Category_id
group by
  c.CategoryName

(Для целей группирования все результаты NULL попадают в одну группу. Это может удивить некоторых, кто привык к тому факту, что NULL! = NULL при записи условий)

0 голосов
/ 19 марта 2010
SELECT C.CategoryName, Count(P.Post_ID)
FROM Category C INNER JOIN Posts P
ON P.CategoryID = C.CategoryID
GROUP BY C.CategoryName
UNION
SELECT NULL, Count(P.Post_ID)
FROM Posts P
WHERE P.CategoryID IS NULL
GROUP BY NULL
0 голосов
/ 19 марта 2010

Должно работать с чем-то вроде этого:

SELECT C.category, COUNT(*) AS post_count
FROM Post P
LEFT JOIN Category C ON P.category_id=C.category_id
GROUP BY C.category

Я не уверен насчет столбца идентификаторов в категории, возможно, вам придется заменить его на правильное имя.

Редактировать : Упс - группа забыта.

...