Mysql查询,WP自定义字段
我需要从几个WP表中选择一些内容,其中一个是带有特定键的自定义字段值。问题是,有些帖子并没有这个键的自定义字段,但除此之外,它们和查询匹配。所以问题是,我如何选择即使没有自定义字段和这个键,但不是匹配查询的文章?没有自定义字段的帖子的字段值应设置为0。我觉得它有点像COALESCE,但我要么用错了,要么就不能在这种情况下使用。到目前为止,我的问题是:Mysql查询,WP自定义字段,mysql,wordpress,Mysql,Wordpress,我需要从几个WP表中选择一些内容,其中一个是带有特定键的自定义字段值。问题是,有些帖子并没有这个键的自定义字段,但除此之外,它们和查询匹配。所以问题是,我如何选择即使没有自定义字段和这个键,但不是匹配查询的文章?没有自定义字段的帖子的字段值应设置为0。我觉得它有点像COALESCE,但我要么用错了,要么就不能在这种情况下使用。到目前为止,我的问题是: select lists.id,lists.`type`,lists.`status`,lists.watched_eps, lists.scor
select lists.id,lists.`type`,lists.`status`,lists.watched_eps, lists.score,wp_posts.post_title,wp_posts.post_name,wp_terms.slug,wp_postmeta.meta_value from anime_lists
INNER JOIN wp_posts ON (wp_posts.ID = lists.post_id )
INNER JOIN wp_postmeta ON (wp_postmeta.post_id= lists.post_id )
INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy ON(wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
INNER JOIN wp_terms ON(wp_terms.term_id = wp_term_taxonomy.term_id)
where lists.id=1
and wp_term_taxonomy.taxonomy = 'category'
and wp_postmeta.meta_key='eps'
group by lists.`post_id`
order by lists.`status`, wp_posts.post_title
实际上,查询输出了我需要的所有内容,但没有这些没有自定义字段“eps”的帖子。如果我删除
和wp_postmeta.meta_key='eps'
它会输出这些帖子,但是这样我在wp_postmeta.meta_value
字段中得到了错误的值。据我所知,你只需将wp_postmeta join更改为左join
并将该表上的WHERE
条件移动到join,离开
SELECT lists.id, lists.`type`, lists.`status`, lists.watched_eps,
lists.score,wp_posts.post_title,wp_posts.post_name,wp_terms.slug,
wp_postmeta.meta_value
FROM anime_lists
INNER JOIN wp_posts
ON wp_posts.ID = anime_lists.post_id
LEFT JOIN wp_postmeta
ON wp_postmeta.post_id = anime_lists.post_id
AND wp_postmeta.meta_key='eps'
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
INNER JOIN wp_terms
ON(wp_terms.term_id = wp_term_taxonomy.term_id)
WHERE lists.id=1
AND wp_term_taxonomy.taxonomy = 'category'
GROUP BY lists.`post_id`
ORDER BY lists.`status`, wp_posts.post_title
据我所知,您只需将wp_Posteta连接更改为
左连接
,然后将该表上的WHERE
条件移动到连接,离开
SELECT lists.id, lists.`type`, lists.`status`, lists.watched_eps,
lists.score,wp_posts.post_title,wp_posts.post_name,wp_terms.slug,
wp_postmeta.meta_value
FROM anime_lists
INNER JOIN wp_posts
ON wp_posts.ID = anime_lists.post_id
LEFT JOIN wp_postmeta
ON wp_postmeta.post_id = anime_lists.post_id
AND wp_postmeta.meta_key='eps'
INNER JOIN wp_term_relationships
ON (wp_posts.ID = wp_term_relationships.object_id)
INNER JOIN wp_term_taxonomy
ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
INNER JOIN wp_terms
ON(wp_terms.term_id = wp_term_taxonomy.term_id)
WHERE lists.id=1
AND wp_term_taxonomy.taxonomy = 'category'
GROUP BY lists.`post_id`
ORDER BY lists.`status`, wp_posts.post_title
看来他们已经成功了。更改了
wp_postETA.meta_值
以合并(wp_postETA.meta_值,0),它似乎可以满足我的需要。非常感谢。看来你成功了。更改了wp_postETA.meta_值
以合并(wp_postETA.meta_值,0),它似乎可以满足我的需要。谢谢。