Помогите составить запрос Mysql

12
Aisamiery
На сайте с 12.04.2015
Offline
293
#11

Такие штуки делаются через джоины таблицы самой на себя столько раз сколько нужно полей получить, в данном случае примерно как то так


SELECT t1.product_id as `product`, t1.name, t2.value as `color`, t3.value as `material`
FROM
`mytbl` as t1
INNER JOIN `mytbl` as t2 on t1.product_id = t2.product_id and t2.id_field = 578
INNER JOIN `mytbl` as t3 on t1.product_id = t3.product_id and t3.id_field = 549
GROUP BY t1.product_id;

В итоге вы получите табличку вида

product|name|color|material

651|Товар1|Красный|Пластик, дерево

652|Товар2|зеленый|Железо

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
vandamme
На сайте с 30.11.2008
Offline
672
#12

Aisamiery, да, но если в одном товаре поле 3, а в другом товаре полей 5 ?

FX
На сайте с 02.04.2015
Offline
28
#13

Это называется pivot tables. Некоторые SQL серверы умеют с ними работать, в mysql через одно место

Как пример: https://codingsight.com/pivot-tables-in-mysql/

Aisamiery
На сайте с 12.04.2015
Offline
293
#14
vandamme:
Aisamiery, да, но если в одном товаре поле 3, а в другом товаре полей 5 ?

Сделайте через LEFT JOIN, ячейки будут пустые в тех полях где нет значения

S
На сайте с 08.01.2012
Offline
53
#15

Все получилось! Всем большое спасибо!))

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий