SQL三个表返回一行

时间:2017-10-05 22:04:08

标签: mysql sql tsql

嘿嘿,如果这个问题真的很干净,那就很抱歉了,但是如下所示

我有一个与此相关的作业任务。 写一个查询来返回这个学生使用LastName" Field"

拍摄的主题数

这三个表是:

Students:
     StudentID
     FirstName
     LastName

StudentCourses:
      StudentCourseID
      StudentID
      CourseID

Courses:
      Maths
      Science
      English
      P.E
      Drama
      Film Studies

我有类似

的东西
SELECT Students.studentID, 
       Students.Lastname, 
       Students.CourseID 
  FROM Students 
 WHERE Students.LastName = "Field"
 INNER JOIN StudentCourses 
    ON Student.CourseID = StudentCourses.CourseID
  FULL JOIN Student 
    ON Student.RoleID = Courses.CourseID

这是写的所以我无法测试它,但这对任何人来说都是正确的吗?

3 个答案:

答案 0 :(得分:2)

使用COUNT()函数查找学生所选课程的数量,并使用WHERE子句将学生的姓氏过滤为“字段”。

SELECT s.StudentID, s.LastName, COUNT(sc.CourseID)
FROM Students s 
JOIN StudentCourses sc 
ON s.StudentID = sc.StudentID 
WHERE  s.LastName = 'Field’;

答案 1 :(得分:1)

应该到哪里去。你真的不需要第3次加入课程表,因为你没有从中选择任何东西。

SELECT st.STUDENTID, 
       st.LASTNAME, 
       count(stc.COURSEID) as COURSECOUNT
FROM   STUDENTS st 
       INNER JOIN STUDENTCOURSES stc 
               ON st.COURSEID = stc.COURSEID 
WHERE  st.LASTNAME = 'Field' 

答案 2 :(得分:0)

您可以尝试以下查询。 WHERE子句应在FROMJOIN条款之后

SELECT s.studentid,
       s.lastname,
       COUNT(sc.courseid)
  FROM student s
  JOIN studentcourses sc
    ON s.studentid = sc.studentid
 WHERE s.lastname = 'Field'