首先我想提一提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