Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询,WP自定义字段_Mysql_Wordpress - Fatal编程技术网

Mysql查询,WP自定义字段

Mysql查询,WP自定义字段,mysql,wordpress,Mysql,Wordpress,我需要从几个WP表中选择一些内容,其中一个是带有特定键的自定义字段值。问题是,有些帖子并没有这个键的自定义字段,但除此之外,它们和查询匹配。所以问题是,我如何选择即使没有自定义字段和这个键,但不是匹配查询的文章?没有自定义字段的帖子的字段值应设置为0。我觉得它有点像COALESCE,但我要么用错了,要么就不能在这种情况下使用。到目前为止,我的问题是: select lists.id,lists.`type`,lists.`status`,lists.watched_eps, lists.scor

我需要从几个WP表中选择一些内容,其中一个是带有特定键的自定义字段值。问题是,有些帖子并没有这个键的自定义字段,但除此之外,它们和查询匹配。所以问题是,我如何选择即使没有自定义字段和这个键,但不是匹配查询的文章?没有自定义字段的帖子的字段值应设置为0。我觉得它有点像COALESCE,但我要么用错了,要么就不能在这种情况下使用。到目前为止,我的问题是:

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),它似乎可以满足我的需要。谢谢。