Я пытаюсь получить наборы данных из нормализованной таблицы таблиц MySQL 5.7, где я пытаюсь получить значения.
Есть 4 таблицы: https://www.db -fiddle.com / f / q2PJZVegdWXnpkotN2utu2/ 0
Таблица 1: статьи
article_id | title
1 First Car
2 Second Car
Таблица 2: Articles_attr
article_id | attr_id
1 1
1 2
1 3
1 5
2 3
2 4
Table3: attr_groups
attr_id | attr_group_id | attribute
1 1 red
2 2 diesel
3 3 automatic
4 3 airbag
5 3 radio
Table4: attr_groups_names
attr_group_id | name
1 color
2 engine
3 features
Теперь я хотел бы получить все наборы данных (car1, car2, ..) с помощьювсе атрибуты, в которых агрегированы атрибуты с несколькими атрибутами на группу.
например,
article_id | title | color | engine | features
1 Car 1 red diesel automatic,radio
2 ...
Количество групп огромно (20+), поэтому я бы хотел избежать многих объединений.
Мой лучший снимок:
SELECT
a.article_id,
a.title,
GROUP_CONCAT(CASE attr.attr_group_id WHEN 26 THEN cat.attr_de END) AS functions,
GROUP_CONCAT(CASE attr.attr_group_id WHEN 27 THEN cat.attr_de END) AS miscellaneous
FROM articles_attr AS attr
INNER JOIN articles a ON a.article_id = attr.article_id
INNER JOIN articles_attr AS cat ON cat.attr_id = attr.attr_id
GROUP BY a.article_id
LIMIT 3
Как это можно сделать?