select s1.SId,SName ,sum(CCredit)Credit from student s1,course s2,sc s3,grade s4,dept s5 where s3.SId=s1.SId and s1.GId=s4.GId and s3.CId=s2.CId and s4.DId=s5.DId and s5.DName='计算机科学与技术系' group by SId;
时间: 2024-04-13 12:31:17 浏览: 159
数据库系统概论Sql练习表student、sc、course.pdf
这个查询是为了找出"计算机科学与技术系"的学生的总学分。其中,你使用了多个表的连接来获取所需的信息。查询中使用了GROUP BY子句,以便按照学生ID对结果进行分组。
这是你的查询语句:
```sql
SELECT s1.SId, SName, SUM(CCredit) AS Credit
FROM student s1, course s2, sc s3, grade s4, dept s5
WHERE s3.SId = s1.SId
AND s1.GId = s4.GId
AND s3.CId = s2.CId
AND s4.DId = s5.DId
AND s5.DName = '计算机科学与技术系'
GROUP BY SId;
```
这个查询将返回"计算机科学与技术系"的每个学生的ID、姓名和总学分。
需要注意的是,你在查询中使用了多个表的连接,并且没有使用显式的JOIN语句。这种写法可以工作,但建议使用显式的JOIN语句来提高查询的可读性和维护性。以下是使用显式的JOIN语句来重写查询的示例:
```sql
SELECT s1.SId, SName, SUM(CCredit) AS Credit
FROM student s1
JOIN sc s3 ON s3.SId = s1.SId
JOIN course s2 ON s3.CId = s2.CId
JOIN grade s4 ON s1.GId = s4.GId
JOIN dept s5 ON s4.DId = s5.DId
WHERE s5.DName = '计算机科学与技术系'
GROUP BY SId;
```
这样可以更清晰地表示表之间的关联关系。
阅读全文