Добрый день. Есть одна таблица с категориями и подкатегориями. Структура таблицы примерно следующая: Код (PHP): id_cat | parent_id | title --------------------------------------- 1 | 0 | Категория 1 --------------------------------------- 2 | 1 | Подкатегория 1 --------------------------------------- 3 | 1 | Подкатегория 2 --------------------------------------- 4 | 0 | Категория 2 --------------------------------------- 5 | 4 | Подкатегория 1 --------------------------------------- 6 | 4 | Подкатегория 2 --------------------------------------- 7 | 4 | Подкатегория 3 --------------------------------------- 8 | 0 | Категория 3 Как в одном запросе получить название категории и количество её подкатегорий? PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Никак. При такой структуре вообще подкатегории только рекурсией можно получить. Чтоб можно было легко и запросами, надо освоить Nested Sets или Materialized Path, или ещё какие-то аналоги вроде были.
почти получилось что хотел: Код (PHP): $sql = "SELECT article_cats.title, COUNT(article_cats.id_cat) AS count FROM article_cats, article_cats AS tb WHERE article_cats.id_cat=tb.parent_id GROUP BY article_cats.id_cat ORDER BY article_cats.id_cat ASC"; НО! Если в категории нет подкатегорий, то она не выводится , хотелось чтобы она тоже выводилась. PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color][size=85][color=green]Добавлено спустя 56 минут 15 секунд:[/color][/size]остановился на таком варианте: [code=php]$sql = "SELECT title, id_cat AS i, (SELECT COUNT(*) FROM article_cats WHERE i=parent_id) AS count FROM article_cats ORDER BY id_cat ASC"; в принципе задачку решил не переделывая таблиц в базе
desertFox, ну если у вас только один уровень подкатегорий, то пойдёт. А если больше - будет врать. Внуков ваша конструкция считать не будет. Так что гуглите Nested Sets, к тому же для PHP тысяча библиотек, которые реализуют эту технологию