Общие > Базы данных

GROUP BY

(1/3) > >>

Tryapkonator:
Проблема в следующем. Есть 2 таблицы


           table1
+------------------------+
|  id  |  cat  |  name   |
+------------------------+
|  1   |   1   |   pc1   |
|  2   |   1   |   pc2   |
|  3   |   1   |   pc3   |
+------------------------+

           table2
+------------------------+
|  id  |      name       |
+------------------------+
|  1   |    catalog 1    |
|  2   |    catalog 2    |
+------------------------+

И запрос...
SELECT COUNT(table1.cat) AS kol, table1.name FROM table1, table2 WHERE table1.cat=table2.id GROUP BY table2.id

Мне нужно выдрать количество подкаталогов в каждом каталоге, но если подкаталогов 0, то возвращается NULL, а мне нужно чтоб было 0. Как быть? Пробовал IFNULL, но видимо руки кривые =((((

Forza:
Во-первых, от нечего делать на работе создал твои таблички, и NULL для пустых каталогов у меня не выводился (для них вообще не было строк в выводе результатов запроса).
Во-вторых, раз ты выводишь результаты относительно каталогов (я понял, инфа о них хранится в table2), то почему в селекте запрашиваешь table1.name?
В-третьих, попробуй вот это:
SELECT COUNT(table1.cat) AS kol, table2.name FROM table2 LEFT JOIN table1 ON table1.cat=table2.id GROUP BY table2.id;

Tryapkonator:
Я ошибся, не NULL возвращается, а вообще ничего =) Т.е. мне нужно примерно такой результат:

+------------------------+ 
|  kol  |      name      | 
+------------------------+ 
|  3    |    catalog 1   | 
|  0    |    catalog 2   | 
+------------------------+

а получаю

+------------------------+ 
|  kol  |      name      | 
+------------------------+ 
|  3    |    catalog 1   | 
+------------------------+

Вот =(((

Forza:
Так ты мой запрос попробовал????

Tryapkonator:
Да, Его результаты и показал

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии