Как отобразить данные по всем подкатегориям с помощью сводной таблицы?

Как можно изменить код для вывода записей всех подкатегорий, а не только одной конкретной, используя сводную таблицу "Companies | Categories | Company_category"?
  • 7 мая 2024 г. 17:40
Ответы на вопрос 2
Для отображения данных по всем подкатегориям с помощью сводной таблицы "Companies | Categories | Company_category" можно использовать следующий код:

```sql
SELECT C.company_name, CC.category_name, COUNT(CC.category_id) AS total_count
FROM Companies AS C
JOIN Company_category AS CC ON C.company_id = CC.company_id
GROUP BY C.company_name, CC.category_name;
```

Чтобы изменить код для вывода записей всех подкатегорий, а не только одной конкретной, нужно исключить поле `CC.category_name` из `GROUP BY` и `SELECT`, а также добавить агрегатную функцию `COUNT` без указания поля `CC.category_name`:

```sql
SELECT C.company_name, COUNT(CC.category_id) AS total_count
FROM Companies AS C
JOIN Company_category AS CC ON C.company_id = CC.company_id
GROUP BY C.company_name;
``` 

Этот запрос вернет данные по всем компаниям и количеству категорий, связанных с каждой из них.
Если вложенность категорий неограниченная, то при такой структуре никак — MySQL, вроде, до сих пор не умеет делать рекурсивные запросы. Если ограниченная, то можно сделать N джойнов и проверять на совпадения все уровни. 
Но проще всего внедрить хранение категорий в формате nested set.
Похожие вопросы