2017-06-07 49 views
0

我有一个统计上我的网站的评论发布内容插件(“有用”,“搞笑”,“酷”,它给添加其他描述的选项为好。所以我已经添加了“没有帮助”。合并两个SQL语句与运算(不加入本身)

现在我想自定义用于通过采取“无益的”票进去,以显示得票最多评论的查询(源自很有帮助减去他们。票),而不是总的所有选票只是计算

所以原本用于此查询是:

SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` GROUP BY review_id ORDER BY count DESC LIMIT 5 

而且我发现我可以指望的发布内容(其中,在“速率”列中的编号为0,1或2),像这样:

SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` <3 GROUP BY review_id ORDER BY count DESC LIMIT 5 

,我还可以计数所述非发布内容(其中在“率”列数为3),像这样:

SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` >2 GROUP BY review_id ORDER BY count DESC LIMIT 5 

但我无法弄清楚是如何将这两个SELECT语句结合起来,使得顶部5“计数”结果显示每个查询的计数的差异。

我不想要一个工会是因为没有减法做,我尝试了多种选择的各种排列,但不能管理工作这一点。

有什么建议吗?

一个实例表:Example Table

在上述示例中,如果所有的票被盲计数,综述#4排名比审查#10高,但如果未发布内容考虑在内,#10是用网共1与审查#4的净总量为0.1

有意义排名更高?

+0

您可以只是简单地将其添加到您的SELECT语句。像选择REVIEW_ID,(QUERY1)为Query 1,(QUERY2)作为QUERY2从... –

+0

我能做到这一点,如果我想要两个独立的结果,但我想更新由查询使用的结果返回的总总第二个查询。 – user157904

回答

0

试试这个:

select a.review_id,b.review_id,a.count,b.count from 
(SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` <3 GROUP BY review_id ORDER BY count DESC LIMIT 5) as a 
left join 
(SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` >2 GROUP BY review_id ORDER BY count DESC LIMIT 5) as b 
on a.review_id = b.review_id 

这是工作,如果第一次查询的review_id =review_id秒查询,否则你也可以使用<>来both

其他选项使用union all

SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` <3 GROUP BY review_id ORDER BY count DESC LIMIT 5 
union all 
SELECT review_id, COUNT(*) AS count FROM `wp_reviews_ratings` where `rate` >2 GROUP BY review_id ORDER BY count DESC LIMIT 5 
+0

感谢插嘴,虽然你的第一个解决方案将返回以下(不是我要找的):http://imgur.com/a/OvDzI 而你的第二个解决方案将返回一个错误:“联盟的不正确使用和ORDER BY“ – user157904

+0

您可以删除order by子句..它最近很匆忙。 –

+0

是的,但Order By很重要,否则它不会排列最有用的评论。 – user157904