Здравствуйте!
Есть таблицы
Table #__sections
id title
1 Ключевые слова
2 RSS Яндекс
3 Статьи
4 Сайт
Table #__categories
id title section
1 Ключевые слова 1
2 RSS Яндекс 2
3 Покупка авто 3
4 Автострахование 3
5 Ремонт авто 3
6 Автоновости 3
7 Автоюмор 3
8 Автоэлектроника 3
9 Авто и закон 3
10 Автомобили 3
11 Профилактика авто 3
12 Полезные советы 3
13 Автодизайн 3
14 Авто и безопасность 3
15 Автодиллеры 3
16 Сайт 4
17 Новости сайта 4
Надо что бы на экране было вот так
Ключевые слова(1)
Ключевые слова
RSS Яндекс(1)
RSS Яндекс
Статьи(13)
Покупка авто
Автострахование
Ремонт авто
Автоновости
Автоюмор
Автоэлектроника
Авто и закон
Автомобили
Профилактика авто
Полезные советы
Автодизайн
Авто и безопасность
Автодиллеры
Сайт(2)
Сайт
Новости сайта
Такой вывод я сделал, написал ф-ию (Это кстати для жумлы)
function getIdAllSectionWithCats(&$count){
$db =& JFactory::getDBO();
if($count == 0)
$query = 'SELECT `s`.`id` AS `s_id`, `s`.`title` AS `s_title`, `c`.`id` AS `c_id`, `c`.`title` AS `c_title` FROM `#__sections` AS `s` LEFT JOIN `#__categories` AS `c` ON `s`.`id` = `c`.`section` GROUP BY `s_id`, `s_title`, `c_id`, `c_title`;';
else
$query = 'SELECT `s`.`id` AS `s_id`, `s`.`title` AS `s_title`, `c`.`id` AS `c_id`, `c`.`title` AS `c_title`, COUNT(`c`.`id`) AS `cnt` FROM `#__sections` AS `s` LEFT JOIN `#__categories` AS `c` ON `s`.`id` = `c`.`section` GROUP BY `s_id`, `s_title`, `c_id`, `c_title`;';
$db->setQuery($query);
$rows = $db->loadObjectList();
return $rows;
}
Вывод на экран
$no_repeat_section = '';
foreach($list_sc as $listing){
if($listing->s_title == $no_repeat_section)
echo str_repeat(' ', 4).$listing->c_title.'<br />';
else
echo '<a href="'.JRoute::_(ContentHelperRoute::getSectionRoute($listing->s_id)).'"><strong>'.$listing->s_title.(isset($listing->cnt) ? '('.$listing->cnt.')' : '').'</strong></a><br />'.str_repeat(' ', 4).$listing->c_title.'<br />';
$no_repeat_section = $listing->s_title;
}
В этой ф-ии переменная $count указывает подсчитать ли количество категорий в секции. Так вот без подсчёта всё выводится ок. При подсчёте надо что бы рядом с секцией выводилось в скобках кол-во категорий и вот тут проблема.
При таком запросе
SELECT `s`.`id` AS `s_id`, `s`.`title` AS `s_title`, `c`.`id` AS `c_id`, `c`.`title` AS `c_title`, COUNT(`c`.`id`) AS `cnt` FROM `#__sections` AS `s` LEFT JOIN `#__categories` AS `c` ON `s`.`id` = `c`.`section` GROUP BY `s_id`, `s_title`, `c_id`, `c_title`;
выводится что у каждой секции внутри всего 1 категория, а в секции Статьи должно быть 13 и секции Сайт - 2 категории. Если из запроса убрать `c_title` (GROUP BY `s_id`, `s_title`, `c_id`, `c_title`), то категории становятся не видны, зато подсчёт их в секциях становится правильным. Собственно сабж