Задать вопрос

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

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

а) добавить в таблицу каталогов поле, по запросу которого MYSQL будет считать количество материалов с текущим catalog_id в таблице материалов (это же вроде можно сделать для одной ячейки? или надо будет view создавать?)
б) при добавлении материала в БД триггерить инкремент количества материалов в таблице каталогов
в) юзать интерфейс DomainObjectAssembler в PHP и для каждого каталога вызывать запрос count
г) делать инкремент для поля каталога при добавлении материала через DomainObjectAssembler в PHP
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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) должен решить твою проблему
Ответ написан
Там нужен вложеный запрос не более
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽