Как подсчитывать количество материалов в каталоге?

Каталоги хранятся в одной таблице, материалы - в другой (связь ID через Foreign key). Когда заходишь на главную модуля сайта - должны отобразиться каталоги с указанием количества материалов в каждом.
Как лучше сделать:

а) добавить в таблицу каталогов поле, по запросу которого MYSQL будет считать количество материалов с текущим catalog_id в таблице материалов (это же вроде можно сделать для одной ячейки? или надо будет view создавать?)
б) при добавлении материала в БД триггерить инкремент количества материалов в таблице каталогов
в) юзать интерфейс DomainObjectAssembler в PHP и для каждого каталога вызывать запрос count
г) делать инкремент для поля каталога при добавлении материала через DomainObjectAssembler в PHP
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@dimabdc
Можно сделать запросом вроде:
SELECT categories.*, (
    SELECT COUNT(id) 
    FROM products  
    WHERE products.category_id = categories.id
) AS products_count 
FROM categories;

Но лучше в таблицу каталогов добавить колонку количества материалов, в таблице материалов добавить триггер на INSERT/DELETE, который бы увеличивал/уменьшал счетчик количества материалов в таблице каталогов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Tuborg
@Tuborg
butalex
Как вариант: ты полюбому получаешь массив с БД, выходит count($my_array) должен решить твою проблему
Ответ написан
Там нужен вложеный запрос не более
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы