Общие > Базы данных
GROUP BY
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:
Да, Его результаты и показал
Навигация
Перейти к полной версии