2014-07-14 44 views
0

我在查询Wordpress Posts和PostMeta表。由于Wordpress的PostMeta表的“实体属性值”设计,很难为每个查询查询多个元值。需要相关的子查询。相关子查询不起作用

这是我目前的SQL。我使用子查询通过Post_ID列将PostMeta表连接到自身,但内部查询不识别外部查询的Post_ID列。

select p.id, p.post_date, tmp.product_name, pm.meta_value as provider_id 
from wp_postmeta pm join wp_posts p on p.id=pm.post_id 
join ( 
    select post_id, meta_value as product_name from wp_postmeta 
    where meta_key = 'product_name' and post_id = pm.post_id 
) tmp on tmp.post_id=p.id 
where pm.meta_key='provider_id' and p.post_type='product_listing'; 
+0

你会得到一个语法错误,或只是没有看到你认为你应该的结果吗? – Matt

回答

0

对不起,我发现相关的子查询需要在SELECT子句中去,不能用作JOINed表。

select p.id, p.post_date, pm.meta_value as provider_id, 
( 
    select meta_value from wp_postmeta 
    where meta_key = 'product_name' and post_id = pm.post_id 
) as product_name 
where pm.meta_key='provider_id' and p.post_type='product_listing'; 
+2

如果这是对你的问题的改进,你应该编辑你的问题。如果这回答了这个问题,那么你可以考虑关闭它。 –