首页 > 解决方案 > SQL:在另一个表中按类型获取一些

问题描述

我对 SQL 很陌生,目前正在尝试调整以处理不同表中的数据。我想检索特定学生积分的单数总和。

(因此,必须将每个“Discipline_Student_ID”的相关“Discipline_Pointsch”添加到我要返回的 SUM 中。(WHERE [特定学生 ID]))。我将如何在我的代码中加入表格以执行我想要实现的目标?

(谢谢您的帮助!) 在此处输入图像描述

标签: sql

解决方案


假设您还需要Student表格中的内容(例如他们的名字),您可以这样做:

SELECT s.Student_ID, s.Student_Name, coalesce(SUM(dt.Discipline_Pointsch),0) As Points
FROM Student s
LEFT JOIN Discipline d on d.Student_NWU_ID = s.Student_ID
LEFT JOIN Discipline_Type dt on dt.Discipline_Type_Code = d.Discipline_Type_Code
WHERE s.Student_ID = [specific students ID]
GROUP BY s.Student_ID, s.Student_Name

我选择了 LEFT(外部)联接而不是 INNER 联接,以及合并操作,因此您可以看到没有任何缺点的学生的结果。

您也可以选择简化该GROUP BY部分,同时使查询结构更复杂一些,如下所示:

SELECT s.*, coalesce(p.Points) Points
FROM Student s
LEFT JOIN (
    SELECT Student_NWU_ID, SUM(Discipline_Pointsch) As Points
    FROM Discipline d
    INNER JOIN Discipline_Type dt on dt.Discipline_Type_Code = d.Discipline_Type_Code 
    GROUP BY Student_NWU_ID
) p ON p.Student_NWU_ID = s.Student_ID
WHERE s.Student_ID = [specific students ID]

推荐阅读