我似乎无法让这个 sql 查询以我想要的方式工作

Posted

技术标签:

【中文标题】我似乎无法让这个 sql 查询以我想要的方式工作【英文标题】:I can't seem to get this sql query to work the way i want 【发布时间】:2014-07-18 06:43:27 【问题描述】:

我有一张表,上面有一些书籍的评分;

这些是我为测试此查询而创建的一些虚拟记录;

 ID    BookID   RatersID     Rating    Date
 1     2        3            5         (date)
 2     2        4            4         (date)


SELECT `RatersID`,
COUNT(*) AS `raters`, `Rating`, COUNT(*) AS `Ratings`
FROM
`BOOKS_ratings`
GROUP BY
`BookID`

当我运行我期望的查询时

BookID    Raters     Ratings
2         2          9

我得到了什么:

RatersID    raters    Rating    Ratings
3           2         5         2

我不明白为什么会这样? /////////////////以上已回答

我的查询工作正常,但是当尝试在 php 中接收信息时,数字重复了

例如评分者 = 2 PHP 显示 22 评分 = 9 PHP 显示 99

    $getratingq = mysqli_query($con,"SELECT `RatersID`, COUNT(*) AS `Raters`, sum(Rating) AS `Ratings` FROM `BOOKS_ratings` WHERE `BookID` ='$bookid' GROUP BY `BookID` LIMIT 1") or die("Get ratings query error");
if($getrating = mysqli_fetch_array($getratingq))

   echo $ratings = $getrating['Ratings'];
   $raters= $getrating['Raters'];
   $rating =  $ratings/$raters;
   $stars = floor("$rating");

【问题讨论】:

【参考方案1】:

你需要使用sum()得到Rating的总和

    SELECT 
   `BookID`,
    COUNT(*) AS `raters`
    sum(Rating) as Ratings
    FROM
    `BOOKS_ratings`
    GROUP BY
    `BookID`

【讨论】:

谢谢你,我意识到我的错误,我使用了计算有多少人评分的计数,我应该使用总和

以上是关于我似乎无法让这个 sql 查询以我想要的方式工作的主要内容,如果未能解决你的问题,请参考以下文章

LINQ to SQL和外键的基本误解

Mysql DISTINCT 无法以我的语言正常工作

我正在从本地存储中获取一些数据到一个新的页面购物车中,它显示了所有数据,但在布局中,以我想要的方式

如何让 sql 排名查询工作以查找特定 id 的排名

Java + Oracle 中的 SQL 查询

我无法让 x 轴按我想要的方式工作