2017-04-27 20 views
1

我想加入wp_posts和wp_postmeta表是這樣的:將它加入wp_posts時,如何將wp_postmeta表的所有值放在一行中?

SELECT wp_posts.id, wp_posts.post_title, wp_posts.post_author, wp_postmeta.meta_key, wp_postmeta.meta_value 
FROM wp_posts 
LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id 
WHERE post_type = 'job'; 

但我需要在wp_postmeta表中的鍵值對的值是一個行;使select語句看起來是這樣的:

SELECT wp_posts.id, wp_posts.post_title, wp_posts.post_author, wp_postmeta.meta_key1, wp_postmeta.meta_key2, wp_postmeta.meta_key3, wp_postmeta.meta_key4 

這是第3行是如何出現在wp_postmeta表內:

** POST_ID meta_key meta_value ** 23841 job_start 1488386107 23841 job_requirements空 23841 job_employment全職

如何通過select語句修改meta_values在每個post_id的select語句的結果的一行中?任何幫助表示讚賞。

回答

0

如果在wp_postmeta的字段中添加星號(),例如wp_postmeta。 這意味着您正在獲取所有列。

SELECT wp_posts.id, wp_posts.post_title, wp_posts.post_author, wp_postmeta.* 
FROM wp_posts 
LEFT JOIN wp_postmeta ON wp_posts.id = wp_postmeta.post_id 
WHERE post_type = 'job'; 

試試吧。

+0

感謝您的回覆,這是一個有用的建議,但我的問題是wp_postmeta表中的值以meta_key和meta_value列中鍵值對的形式出現。有沒有辦法讓所有meta_values出現在與該值相關聯的meta_key的列名下的一行中? 這是他們出現在wp_postmeta表: 23841 job_start 1488386107個 23841 job_requirements空 23841 job_employment全職 我可以把所有的meta_values一行,同時加入? – vjks

+0

我認爲你不能那樣做。除非您使用PHP創建腳本,以便您可以在數據庫中創建一個視圖,並以您希望顯示的方式顯示它。您可以查詢所有這些數據,但實際上無法僅使用MySQL將meta_key作爲列名。你可以用PHP實現 –

0

這是我一直在尋找的解決方案。基於POST_ID,這讓我可以把wp_postmeta的meta_values在單行wp_posts的列值:

SELECT wp_posts.ID, wp_posts.post_title, wp_posts.post_author, pm1.meta_value as job_start_date, pm2.meta_value as job_end_date 
FROM wp_posts 
LEFT JOIN wp_postmeta AS pm1 ON (wp_posts.ID = pm1.post_id AND pm1.meta_key='job_start') 
LEFT JOIN wp_postmeta AS pm2 ON (wp_posts.ID = pm2.post_id AND pm2.meta_key='job_end') 
WHERE wp_posts.post_type = 'job'; 

此處,我發現這個解決方案:http://subharanjan.com/sql-query-to-get-post-and-its-meta_values-as-one-row-of-record-single-data-grid/

對不起,要是我不我的問題沒有明確提出。

相關問題