我有两个表orders,product_meta,如下所示:
订单:
order_id product_id
1 45
1 46
2 46 product_meta:
product_id meta_key meta_value
45 price 1199
45 name GPU-1
46 price 1299
46 name GPU-2我想要一张这样的桌子
order_id product_id product_name product_price
1 45 GPU-1 1199
1 46 GPU-2 1299
2 46 GPU-2 1299我尝试过的查询:
select
o.order_id,
o.product_id,
pm.meta_value as 'product_name'
from orders o
join product_meta pm on pm.product_id = o.product_id AND pm.meta_key = 'name'但是这只适用于一个字段(name),所以我如何修改它以包括价格和其他元值?
发布于 2020-06-20 16:24:11
一种方法是两个联接:
select o.*, pmn.meta_value as product_name, pmp.meta_value as product_price
from orders o left join
product_meta pmn
on pmn.product_id = o.product_id and pmn.meta_key = 'name' left join
product_meta pmp
on pmp.product_id = o.product_id and pmp.meta_key = 'price';这使用left join,因此所有订单都将包括在内,即使元数据缺少名称或价格或两者都缺少。
https://stackoverflow.com/questions/62488492
复制相似问题