2017-09-06 64 views
-1

所以我試圖從wordpress數據庫中提取關於商家信息的信息。信息存儲在列出所有附加業務信息的wp_posts表和wp_postmeta表中。如何用Left Join查詢WordPress數據庫

wp_postmeta表保存這樣的數據:每條數據都有自己的行,信息不會作爲序列化數組存儲在一行中。

這是到目前爲止我的數據庫查詢:

$wpdb->get_results(
    " SELECT * FROM " . $wpdb->posts . 
    " LEFT JOIN "  . $wpdb->postmeta . 
    " ON "   . $wpdb->posts . ".ID = " . $wpdb->postmeta . ".POST_ID" . 
    " WHERE "   . $wpdb->posts . ".POST_TYPE = 'lv_listing' " . 
    " AND "   . $wpdb->posts . ".POST_STATUS = 'publish' " . 
    " GROUP BY "  . $wpdb->posts . ".ID"); 

目前,各組的結果給了我只有一排從wp_postmeta表,其中我期待像20行應該符合我的分組標識通過。 我在做什麼錯?

+1

所以,如果你看到的都是從各表並沒有什麼字段在'wp_postmeta'表中的字段(沒有什麼比空值等),它是很可能你沒有通過ON語句'wp_post.ID = wp_postmeta.POST_ID'匹配你的連接中的任何東西。 –

+0

此外,該組最後是針對SQL標準,幸運的是,最近版本的mysql不允許在默認設置下的此類查詢不再。 – Shadow

+0

你回答我了嗎? –

回答

-1

按照我的理解,你可以在MySQL數據庫中執行一個查詢,並檢查數據是按照你的req還是不在數據庫中。

下面是左外語法加入

SELECT column_name(s) 
FROM table1 
LEFT JOIN table2 ON table1.column_name = table2.column_name; 
+0

他可以做一個IN語句來查看是否有實際的結果。你提出的正是他已經在做的事情。 'SELECT * FROM table1 WHERE ID IN(SELECT POST_ID FROM table2)' –