我有一个简单的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表中某些记录的屏幕截图:
这是一个屏幕截图,显示了ocm_postmeta表中的一些记录:
我正在尝试将_regular_price值设为100,因为post_id与_product_id meta_key值匹配
答案 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来防止过滤掉所有其他行。