считать () как-то - PullRequest
       39

считать () как-то

0 голосов
/ 16 июля 2011

У меня есть следующая таблица: Категории:

cat_id | cat_cat | cat_name
     1 |       0 | name1
     2 |       0 | name2
     3 |       1 | name3
     4 |       2 | name4
     5 |       2 | name5
     6 |       0 | name6
     7 |       1 | name7

Я пытаюсь выбрать все категории с cat_cat = 0 и выбираю счетчик каждой записи, в которой в качестве текущего cat_id указано cat_cat, что дает мне следующий результат:

cat_id | cat_cat | cat_name | cat_subcats
     1 |       0 | name1    |           2
     2 |       0 | name2    |           2
     6 |       0 | name7    |           0

Я пробовал несколько запросов, и мой текущий выглядит следующим образом:

SELECT i.* , COUNT( i2.icon_id ) AS subcats
FROM themes_icons i, themes_icons i2
WHERE i.icon_cat =  '0'
    AND i2.icon_cat = i.icon_id
GROUP BY i.icon_cat, i2.icon_id
ORDER BY i.icon_order ASC

Этот запрос, кажется, дает мне следующие результаты:

cat_id | cat_cat | cat_name | cat_subcats
     1 |       0 | name1    |           1
     1 |       0 | name1    |           1
     2 |       0 | name2    |           1
     2 |       0 | name2    |           1
     6 |       0 | name7    |           0

Кто-нибудь знает, как я могу получить желаемые результаты. Я тоже пробовал использовать операторы объединения, но они продолжают возвращать мне ошибки.

Заранее спасибо.

1 Ответ

2 голосов
/ 16 июля 2011
SELECT c1.cat_id, c1.cat_cat, c1.cat_name,
(
  SELECT COUNT(*)
  FROM categories c2
  WHERE c2.cat_cat=c1.cat_id
) AS cat_subcats
FROM categories c1
WHERE c1.cat_cat=0

Это стандарт SELECT, за исключением подвыбора, который подсчитывает подкатегории для текущей категории.

...