首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL按ID连接分级到ID的详细信息

问MySQL按ID连接分级到ID的详细信息
EN

Stack Overflow用户
提问于 2015-09-26 11:52:23
回答 2查看 55关注 0票数 2

希望有人能帮忙。MySQL JOIN的陈述从来都不是我的强项,它们只是伤害了我的大脑,试图弄清楚它们。

我有一个表,它将一个项目的评级存储在另一个表中,由ID跟踪。

不过,我现在需要做的是显示一个由收视率排序的项目列表,从高到低,从低到高。

我可以很容易地从评级表中按ID获得每个项目的评等列表,但是它会让它JOINed到我被困在上面的项目。并不是所有的项目都有评级(目前为止),因此,如果合并列表不只是停留在现有评级的末尾,也将是有益的。

好的,下面是我的分组声明:

代码语言:javascript
复制
SELECT  `themeID` , SUM(  `rating` ) AS ratings
FROM  `votes` 
GROUP BY  `themeID` 
ORDER BY  `ratings` DESC 

输出

代码语言:javascript
复制
themeID      ratings    
1             6
3             3
2             2
6             2

然后,details表由各种信息组成,如id、filename、name、date等。

在这两个表之间,themeID和id链接它们是相同的。我看过类似查询的其他一些答案,但我无法得到任何答案来处理我的表/查询(可能是因为我没有完全掌握JOIN的答案)。

ANy的帮助将拯救我的严重头痛!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-26 11:56:57

只需加入两个表并添加聚合函数即可。

代码语言:javascript
复制
SELECT d.id, d.filename, d.name, IFNULL(SUM(v.rating), 0) AS ratings
FROM details AS d
LEFT JOIN votes AS v ON d.id = v.themeID
GROUP BY d.id

我使用了LEFT JOIN,所以这将显示细节,即使没有投票。

票数 2
EN

Stack Overflow用户

发布于 2015-09-26 12:10:35

我在sql server中进行了测试,您可以在Mysql中获得相同的测试。

代码语言:javascript
复制
      DROP TABLE #Item
    create table #Item (ID int identity(1,1),ItemNAme varchar(10))
    INSERT INTO #Item(ItemNAme)
    SELECT   'A'
    UNION ALL
    SELECT   'B'
    UNION ALL
    SELECT   'C'

    DROP TABLE #ItemRating
    create table #ItemRating (ItemID int ,rating int)
    INSERT INTO #ItemRating(ItemID,rating)
    SELECT   3,2
    UNION ALL
    SELECT   2,11
    UNION ALL
    SELECT   1, 3
    UNION ALL
    SELECT   2, 4
    union all
    SELECT   1,5
    UNION ALL
    SELECT   3,12
    UNION ALL
    SELECT   1, 4
    UNION ALL
    SELECT   2, 1

    SELECT m.ItemNAme,SUM(I.rating) as Rating
    FROM #Item m INNER JOIN #ItemRating I ON m.ID=I.ItemID
    group by m.ItemNAme
    ORDER BY SUM(I.rating) asc

    --OR same thing can achive 

    SELECT ItemNAme, Rating 
    FROM ( 
    SELECT m.ItemNAme,SUM(I.rating) as Rating
    FROM #Item m INNER JOIN #ItemRating I ON m.ID=I.ItemID
    group by m.ItemNAme
    )P
    ORDER BY Rating Desc
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32796879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档