【发布时间】:2014-03-21 19:17:17
【问题描述】:
请帮我处理我的 MySQL 查询。
基本上我想为用户排名系统检索一些用户。我的项目基于 wordpress 安装。但是由于我的查询非常具体,所以所有的 wordpress 方法和函数都是无用的。 我尝试用文字描述我的查询:
“给我所有用户,他们至少有三个帖子,每个帖子的最低评分为 4。此外,每个用户的帖子至少需要有 5 个评分。”
(查询中的以下日期条件不重要,可以正常工作)
为了存储数据,帖子像往常一样保存在 wp_posts(特殊的 post_type)中。每个帖子的评分数量与元值 (key=rating_count) 一起存储。每个评分都存储在“wp_rating”表中(id、post_id、rating、user_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
问题出在下面一行:
AND (meta.meta_key = 'rating_count' AND meta.meta_value > 4)
触发此查询后,我没有得到任何结果。 (我检查了所有帖子两次以获得足够的评分)
我希望我的描述可以找到解决方案。
亲切的问候, 罗宾:-)
PS:请帮忙,我很困惑:(
【问题讨论】: