Подскажите, как изящней поступить. Есть каталог допустим из 10 рубрик, и есть товары, которые в этих рубриках находятся. 2 разные таблицы. Хочу вывести 5 рубрик с максимальным количеством товаров. Если по тупому, то просто в цикле перебираем каждую рубрику и в каталоге смотрим сколько count у каждой. Но это получается что надо 10 запросов сделать к БД, что довольно накладно на мой взгляд. А как можно это упростить и можно ли?
SELECT a.* FROM table_part AS a, table_item AS b WHERE a.part_id = b.part_id GROUT BY(b.part_id) ORDER BY COUNT(*) DESC LIMIT 5
Чет немного не вкуриваю. Перевел на свой случай Код (Text): SELECT a.* FROM menu AS a, katalog2 AS b WHERE a.id = b.rid GROUP BY(b.rid) ORDER BY COUNT(*) DESC LIMIT 0,5; Пишет Invalid use of group function
Сделал так: PHP: <? require_once "inc/connect.php"; $t = new Db; $t->create("katalog2"); $res=$t->smartSelect("rid,count(id) as counts","group by rid","counts DESC","0,5"); sort($res); for ($i=0; $i<count($res); $i++) { $rids[$i]=$res[$i]["rid"]; } $t->create("menu"); $rubr=$t->select("nazv","id in (".implode(",",$rids).")","id",""); echo "<ul>"; for ($i=0; $i<count($rubr); $i++) { echo "<li><a href=\"catalog/rubr/".$res[$i]["rid"].".htm\">".$rubr[$i]["nazv"]."</a> (".$res[$i]["counts"].")</li>"; } echo "</ul>"; ?> Насколько правильно?