mysql - группировка результатов на основе одного или нескольких значений meta_value - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь создать отчет, показывающий количество заказанных товаров с различными атрибутами.Каждый продукт может иметь один или два атрибута, которые будут соответственно выделены.

В приведенном ниже примере Cup имеет только 1 атрибут, в то время как Shirt и Trouser имеют 2 атрибута.

Возможно ли добиться этого с помощью meta_key и meta_valueкак показано в таблице ниже?Я использую Laravel ver5.8, поэтому любое решение, использующее Eloquent, тоже подойдет.

Спасибо за вашу помощь.

ПУНКТ:

id  name
1   Cup
2   Shirt
3   Trouser

ЗАКАЗЫ:

id   item_id 
1      1
2      2
3      3
4      2

КРИТЕРИИ:

id   order_id   meta_key   meta_value
1      1         colour       Blue
2      2         colour       Red
3      2         size         XL
4      3         colour       Blue
5      3         size         S
6      4         colour       Red
7      4         size         XL

Ожидаемый результат отчета:

Item            order_quantity
Cup Blue             1
Shirt Red XL         2
Trouser Blue S       1

1 Ответ

0 голосов
/ 23 апреля 2019

Вы можете сделать что-то подобное для группировки.

SELECT concat(name, " ", meta_key),
       count(order_id)
FROM item,
     orders,
     criteria
WHERE item.id=orders.item_id
  AND orders.id=criteria.order_id
GROUP BY concat(name," ",meta_key)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...