2015-09-17 4 views
-2

У меня есть этот запрос:Необходимость SQL Query Help Пожалуйста

SELECT 
wp_posts.post_author, 
wp_posts.post_date, 
wp_posts.post_title, 
wp_posts.post_content, 
wp_posts.post_excerpt, 
wp_posts.guid, 
wp_posts.post_name AS slug, 
wp_posts.ID AS wp_post_id, 
wp_posts.post_status, 
wp_sfmembers.display_name, 
wp_postmeta.meta_key, 
wp_postmeta.meta_value 
FROM 
wp_posts 
INNER JOIN wp_sfmembers ON wp_posts.post_author = wp_sfmembers.user_id 
INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
where post_status = 'publish' AND post_type = 'post' 
ORDER BY post_date DESC 

Результатом является этот enter image description here

То, что я хотел бы это: enter image description here

Я просто хочу, чтобы объединить wp_postmeta в одну запись. Я надеюсь в этом есть смысл.

Заранее спасибо.

+0

По вашему запросу 'wp_postmeta' представляет собой таблицу, и в соответствии с вашим вопросом вы«хотите совместить wp_postmeta в одну запись»- вы имеете в виду вы хотите объединить' meta_key' и 'meta_value', или вы хотите объединить значения (скажем) 'meta_value' в один результат? – stuartd

ответ

1

Попробуйте следующее. Предполагается, что вам нужны только определенные значения meta_key, которые я указал в предложении where. Это соответствует вашему примеру, поскольку вы исключаете все значения meta_key, отличные от того, что находится в этом списке. Он также предполагает, что значения meta_key в вашем примере - это то же самое, что нужно каждый раз поднимать как столбцы.

select wp_posts.post_author, 
     wp_posts.post_date, 
     wp_posts.post_title, 
     wp_posts.post_content, 
     wp_posts.post_excerpt, 
     wp_posts.guid, 
     wp_posts.post_name  as slug, 
     wp_posts.id    as wp_post_id, 
     wp_posts.post_status, 
     wp_sfmembers.display_name, 
     min(case when meta_key = '_edit_lock' then wp_postmeta.meta_key end) as meta_key, 
     min(case when meta_key = '_edit_lock' then wp_postmeta.meta_value end) as meta_value, 
     min(case when meta_key = '_yoast_wpseo_focuskw' then wp_postmeta.meta_value end) as meta_focus, 
     min(case when meta_key = '_yoast_wpseo_title' then wp_postmeta.meta_value end) as meta_title, 
     min(case when meta_key = '_yoast_wpseo_metadesc' then wp_postmeta.meta_value end) as meta_desc 
    from wp_posts 
    join wp_sfmembers 
    on wp_posts.post_author = wp_sfmembers.user_id 
    join wp_postmeta 
    on wp_posts.id = wp_postmeta.post_id 
where post_status = 'publish' 
    and post_type = 'post' 
    and meta_key in ('_edit_lock','_yoast_wpseo_focuskw','_yoast_wpseo_title','_yoast_wpseo_metadesc') 
group by wp_posts.post_author, 
      wp_posts.post_date, 
      wp_posts.post_title, 
      wp_posts.post_content, 
      wp_posts.post_excerpt, 
      wp_posts.guid, 
      wp_posts.post_name, 
      wp_posts.id, 
      wp_posts.post_status, 
      wp_sfmembers.display_name 
order by post_date desc 
+0

Здравствуйте, код, который вы написали, очень полезен, но когда я импортирую данные в свою новую БД, я получаю несколько ошибок, а post_content появляется как китайские символы. Я импортирую в поле MsSQL DB, ntext. – DRD

+0

Это, вероятно, какая-то проблема, возникающая при экспорте и импорте в вашу новую базу данных (не связанной с запросом) –