从第3个相关表中选择数据

时间:2016-08-08 22:29:07

标签: mysql sql

我有一个简单的Select语句,它返回2个MySQL表中的数据,这些表运行良好。我现在需要从第3个相关表中返回一些数据,但不知道如何执行此操作。

这是我当前的SQL查询:

select
p.order_id,
p.order_item_id,
p.order_item_name,
p.order_item_type,
max(CASE WHEN pm.meta_key = '_product_id' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) as productID,
CAST(max( CASE WHEN pm.meta_key = '_qty' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) AS UNSIGNED) as Qty,
CAST(max( CASE WHEN pm.meta_key = '_line_total' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) AS UNSIGNED) as lineTotal,
CAST(max( CASE WHEN pm.meta_key = '_line_subtotal' and p.order_item_id = pm.order_item_id THEN pm.meta_value END ) AS UNSIGNED) as subtotal

 from ocm_woocommerce_order_items p join
     ocm_woocommerce_order_itemmeta pm
     on p.order_item_id = pm.order_item_id
 where order_item_type = 'line_item'


 group by p.order_item_id

我有一个第3个表'ocm_postmeta',它有4列:meta_id,meta_key,meta_value和post_id。我需要从此表中检索meta_value,以获取meta_key = _regular_price所在的记录:

ocm_postmeta.post_id = ocm_woocommerce_order_itemmeta.meta_value其中ocm_woocommerce_order_itemsmeta.meta_key ='_ product_id'

以下是显示ocm_woocommerce_order_itemmeta表中某些记录的屏幕截图:

enter image description here

这是一个屏幕截图,显示了ocm_postmeta表中的一些记录:

enter image description here

我正在尝试将_regular_price值设为100,因为post_id与_product_id meta_key值匹配

1 个答案:

答案 0 :(得分:0)

只需将其添加到您的加入中:

SELECT ...
  ,post.meta_value
FROM ocm_woocommerce_order_items p 
JOIN ocm_woocommerce_order_itemmeta pm 
  ON p.order_item_id = pm.order_item_id
LEFT JOIN ocm_postmeta post 
  ON post.post_id = pm.meta_value AND pm.meta_key = '_product_id'
WHERE order_item_type = 'line_item'

由于您只想匹配meta_key为'product_id'的条目,因此您需要使用LEFT JOIN来防止过滤掉所有其他行。