mysql - 具有多个连接的计数

标签 mysql join

我设置了 3 个表格(项目、评论、评级)。我想统计每个项目的评分总数和评论总数,然后将它们合并为互动总数,然后根据互动输出排名靠前的项目。

我在查询时有点困难。

SELECT item.id, count(reviews.review_id) AStotal_reviews, count( ratings. rating_id) AStotal_ ratings,total_reviews+total_ ratings AStotal_interactions FROM items LEFT OUTER JOIN Reviews ON Reviews.item_id=item.id LEFT OUTER JOIN 评分 ON rating.item_id=item.id GROUP BY item.id ORDER BY Total_interactions DESC LIMIT 0,1

最佳答案

SELECT  *, total_reviews + total_ratings AS total_interactions
FROM    (
        SELECT  id,
                (
                SELECT  COUNT(*)
                FROM    reviews
                WHERE   item_id = i.id
                ) AS total_reviews,
                (
                SELECT  COUNT(*)
                FROM    ratings
                WHERE   item_id = i.id
                ) AS total_ratings
        FROM    items i
        ) q
ORDER BY
        total_interactions DESC
LIMIT 1

关于mysql - 具有多个连接的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809166/

相关文章:

php - PDO准备语句 'where'问题

Php mysql 搜索选项

mysql - 在父表上使用 WHERE 和 GROUP BY 的多个 JOIN

r - 通过交叉检查 R tidyverse 中的两列来连接两个表

mysql - SQL JOIN 第一行与 CONCAT_WS

MySQL 数据库 JOIN 表和搜索 WHERE <多列>

php - 使用php更新sql数据库

java - 尝试将数据插入 MySQL 时出错

mysql - 用于计算随时间变化的净推荐值的 SQL 查询

mysql - 组合 3 个 MySQL 查询