首先我想提一提MYSQL的聯接,我的技能有限。然而,這是我擁有的和我想要實現的:內部聯接缺失行
我有默認的WordPress表格,喜歡用post_name,title,status和某個元鍵的meta_value來得到結果。
這是我有:
SELECT
wp_posts.ID, wp_posts.post_name, wp_posts.post_title, wp_posts.post_status, wp_postmeta.meta_value
FROM wp_posts
INNER JOIN
wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN
wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id)
WHERE (
wp_term_relationships.term_taxonomy_id
IN (1, 2, 3)
)
AND wp_posts.post_type = 'my_post_type'
AND (
wp_posts.post_status
IN (
'my_status_1', 'my_status_2'
)
)
AND wp_postmeta.meta_key = 'my_meta_key'
GROUP BY wp_posts.ID
ORDER BY wp_posts.ID ASC
一切正常時,每個帖子都有「my_meta_key」的postmeta預期。但是,如果缺少'my_meta_key',則帖子不在結果中。
我想它是由第二個INNER JOIN造成的,但是如前所述,我不知道應該用什麼來替代它。
我敢肯定,這是一個LEFT JOIN
東西就wp_postmeta
表簡單
考慮:使用LEFT連接而不是INNER JOIN。請參閱以下鏈接以獲取連接類型的視覺解釋:http://www.codinghorror。com/blog/2007/10/a-visual-explanation-of-sql-joins.html – xQbert 2013-02-27 16:08:36