mysql-根据一个或多个meta_values分组结果

时间:2019-04-23 03:01:44

标签: php mysql laravel eloquent

我正在尝试创建一个报告,以显示具有各种属性的订购产品的数量。每个产品可能具有一个或两个属性,这些属性将相应地分开。

下面的示例是Cup仅具有1个属性,而ShirtTrouser具有2个属性。

是否可以使用meta_keymeta_value来实现此目标,如下表所示?我正在使用Laravel ver5.8,因此任何使用Eloquent的解决方案也都可以。

谢谢您的帮助。

ITEM:

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 :(得分:0)

您可以执行类似的分组操作。

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)