2014-07-14 86 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

如果這是對你的問題的改進,你應該編輯你的問題。如果這回答了這個問題,那麼你可以考慮關閉它。 –