#php #mysql #sql
Есть две таблиц. В одной рубрике объявлений: board_cats со структурой: |cat_id|cat_title|...| В другой сами объявления: board_items со структурой |item_id|item_title|...|item_cat_id| выбираю список рубрик по алфавиту $sql = "SELECT * FROM board_cats ORDER BY cat_title ASC"; $result = $inDB->query($sql) ; if ($inDB->num_rows($result)){ while($item = $inDB->fetch_assoc($result)){ $massiv[] = $item; } } всё работает, это просто. Теперь надо к каждой выведенной рубрике добавить счётчик, сколько там объявлений. А вот тут уже я так понимаю нужны JOIN-ы, в которых я пока ни бум-бум, хотя пытался разобраться на примерах. То есть, логика такая - в board_items ищем объявления, у которых item_cat_id = cat_id, считаем их, и сумму пишем в массив. А вот как это сделать? Заранее спасибо.
Ответы
Ответ 1
Да, всё верно, для этого вам нужно соединение таблиц. Так как не у всех категорий могут быть объявления, рекомендую использовать left join вместо обычного join (почитать про типы соединений можете тут и ещё тут): select bc.cat_title, count(bi.item_id) from board_cats bc left join board_items bi on bc.cat_id = bi.item_cat_id group by bc.cat_title Здесь дополнительно идёт группировка по полю bc.cat_title, чтобы можно было использовать агрегатную функцию count. Пример на sqlfiddle.
Комментариев нет:
Отправить комментарий