У меня есть базы данных MySQL с этими таблицами:MySQL: Строки в колонках динамически
таблица продуктов:
+-------------+
| id |
+-------------+
| 1 |
| 2 |
+-------------+
стол attribute_values:
+-------------+----------+-----------+
| product_id | key | value |
+-------------+----------+-----------+
| 1 | title | Orange |
| 1 | code | O125 |
| 2 | title | Pizza |
| 2 | code | O138 |
+-------------+----------+-----------+
И у меня есть этот запрос MySQL:
SELECT products.id,
MAX(CASE WHEN attribute_values.key = 'title' THEN attribute_values.value END) title,
MAX(CASE WHEN attribute_values.key = 'code' THEN attribute_values.value END) code
FROM products JOIN attribute_values ON products.id = attribute_values.product_id
GROUP BY products.id;
С этим ou tput:
+-------------+----------+-----------+
| id | title | code |
+-------------+----------+-----------+
| 1 | Orange | 0125 |
| 2 | Pizza | O138 |
+-------------+----------+-----------+
Я хотел бы сценарий, чтобы сформировать один столбец для каждого отдельного значения attribute_values.key без явного указания ключей (название и код в данном случае).
т.е. pseudoscript:
SELECT products.id
generate column foreach distinct attribute_values.key
FROM products JOIN attribute_values ON products.id = attribute_values.product_id
GROUP BY products.id;
ли это возможно в MySQL?
Спасибо за любые усилия :)