2013-04-04 34 views
0

我很难尝试显示学生正在使用的列中的班级数量。SQL学生数据库

我有以下查询,但我不知道究竟是什么COUNT计数以及如何显示为每个学生计数:

CREATE VIEW Busy_Student AS 
SELECT First_Name, Last_Name, Student.Student_ID 
FROM Student 
INNER JOIN Enrollment ON Enrollment.Student_ID= Student.Student_ID 
GROUP BY Student.Student_ID, Student.First_Name, Student.Last_Name 
HAVING COUNT(*) > 2 

创建一个存储串联名称的视图调用BUSY_STUDENT(第一姓名和姓氏),学生编号和入学人数,适用于所有入学超过2个班的所有学生。分别命名列FULL_NAME,STUDENT_ID和ENROLL_NUM。

+0

这是功课吗? – Barranka 2013-04-04 23:57:28

+0

你可以[编辑]你的问题,为你正在使用的DBMS添加一个标签(连接操作符在它们之间有所不同)以及表定义上的一些信息?但是,您的'SELECT'不提供“连接名称”,因为您并未将它们连接在一起(将名字和姓氏合并到单个“first_name last_name”列中,通常会给出别名,如“student_name “或”full_name“),如果你要显示”注册类的数量“,你需要将COUNT(*)添加到你的SELECT语句中。 – 2013-04-04 23:58:45

+0

@anakata:“更清楚”什么?如果您要对该问题发表评论,请*更清楚地了解您要求此人更清楚地解释的内容。如果你不解释他们需要在问题中“更清楚”的话,那么你的评论没有任何用处。 – 2013-04-05 00:00:43

回答

0

你的SELECT语句应该是这样的:

SELECT First_Name + ' ' + Last_Name AS [FULL_NAME], 
Student.Student_ID, COUNT(*) AS [ENROL_NUM] 
FROM Student 
INNER JOIN Enrollment ON Enrollment.Student_ID= Student.Student_ID 
GROUP BY Student.Student_ID, Student.First_Name, Student.Last_Name 
HAVING COUNT(*) > 2 
0

你说的很接近它:

CREATE VIEW Busy_Student AS 
SELECT 
    CONCAT(First_Name, ' ', Last_Name) AS FULL_NAME, 
    Student.Student_ID AS STUDENT_ID, 
    COUNT(Enrollment.Enrollment_id) AS ENROLL_NUM 
FROM Student 
INNER JOIN Enrollment USING(Student_ID) 
GROUP BY Student.Student_ID 
HAVING ENROLL_NUM > 2 

的计数上的Enrollment行相匹配的学生ID数来实现。由于您只给出了内部连接列,因此我假设每个登记都由列Enrollment_id唯一标识。您应根据您的架构调整该列名称。

使用

First_Name + ' ' + Last_Name AS FULL_NAME 

为SQL Server。