Php 特殊条件下的SQL查询不起作用

Php 特殊条件下的SQL查询不起作用,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,请帮助我进行MySQL查询 基本上,我想为用户排名系统检索一些用户。我的项目基于wordpress安装。但由于我的查询非常具体,所有wordpress方法和函数都是无用的。 我试图用文字描述我的疑问: “请告诉我所有用户,他们至少有三篇文章,每篇文章的最低评分为4分。此外,每个用户的文章至少需要有5分。” (查询中下面的日期条件不重要,工作正常) 为了存储数据,帖子通常保存在wp_posts(特殊的post_类型)中。每个帖子的评分量存储在一个元值中(key=rating\u count)。每个

请帮助我进行MySQL查询

基本上,我想为用户排名系统检索一些用户。我的项目基于wordpress安装。但由于我的查询非常具体,所有wordpress方法和函数都是无用的。 我试图用文字描述我的疑问:

“请告诉我所有用户,他们至少有三篇文章,每篇文章的最低评分为4分。此外,每个用户的文章至少需要有5分。”

(查询中下面的日期条件不重要,工作正常)

为了存储数据,帖子通常保存在wp_posts(特殊的post_类型)中。每个帖子的评分量存储在一个元值中(key=rating\u count)。每个评级存储在表“wp_评级”(id、post_id、评级、用户id)中

我的查询如下所示:

SELECT SUM(r.rating) AS rating,
p.post_author AS user_id,
COUNT(r.rating) AS rating_count
FROM wp_rating r 
INNER JOIN wp_posts p ON p.ID = r.post_id 
INNER JOIN wp_postmeta meta ON meta.post_id = p.ID 
WHERE p.post_status = 'publish' 
AND (meta.meta_key = 'expiration_date' 
AND meta.meta_value < DATE_FORMAT(NOW(), 'Ymd'))
AND (meta.meta_key = 'rating_count' AND meta.meta_value > 4)
AND MONTH(p.post_date) = 03 
AND r.rating > 4 
GROUP BY p.post_author 
HAVING COUNT(p.ID) > 3 
ORDER BY SUM(r.rating) DESC
触发此查询后,我没有得到任何结果。(我检查了所有帖子两次,以获得足够的评分)

我希望我的描述可以找到解决方案

亲切问候,, 罗宾:-)


请帮忙,我很困惑:(

同时列可以等于一个值
meta.meta_key='expiration_date'
meta.meta_key='rating_count'
如何可能同时列可以有这两个值,我猜post和它们的meta之间有一对多的关系您需要另一个连接到
wp_postmeta
表中要满足第二个条件,并确保在此处比较日期类型
meta.meta\u值
闻起来您的文本类型是
meta.meta\u值

SELECT SUM(r.rating) AS rating,
p.post_author AS user_id,
COUNT(r.rating) AS rating_count
FROM wp_rating r 
INNER JOIN wp_posts p ON p.ID = r.post_id 
INNER JOIN wp_postmeta meta ON meta.post_id = p.ID 
INNER JOIN wp_postmeta meta1 ON meta1.post_id = p.ID 
WHERE p.post_status = 'publish' 
AND (meta.meta_key = 'expiration_date' 
AND meta.meta_value < DATE_FORMAT(NOW(), 'Ymd'))
AND (meta1.meta_key = 'rating_count' AND meta1.meta_value > 4)
AND MONTH(p.post_date) = 03 
AND r.rating > 4 
GROUP BY p.post_author 
HAVING COUNT(p.ID) > 3 
ORDER BY SUM(r.rating) DESC
选择总和(r.评级)作为评级,
p、 以用户id发布作者,
计数(额定功率)作为额定功率计数
来自wp_评级r
内部连接wp_posts p ON p.ID=r.post_ID
内部连接wp_postta meta ON meta.post_id=p.id
内部连接wp_postETA meta1在meta1上。post_id=p.id
其中p.post_status='publish'
和(meta.meta_key='expiration_date'
和meta.meta_值4)
月份(p.post_日期)=03
和r评级>4
p.post_作者分组
计数(p.ID)>3
按总和排序(r.额定值)说明

我猜“评级计数”是指您之前创建的aliace

试试看:

 AND (meta.meta_key = COUNT(r.rating) AND meta.meta_value > 4)

非常感谢。我想你帮我解决了这个问题:)@robindee如果行得通,那就读一读
 AND (meta.meta_key = COUNT(r.rating) AND meta.meta_value > 4)