2017-10-05 50 views
0

嘿人對不起,如果這個問題真的心不是乾淨的,但它會爲以下SQL三表返回一行

我有一門功課的任務,沿着這個線路去。 寫QUER返回這個學生有多少學科需要與姓「字段」

這三個表:

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 

這是這麼寫的我不能測試它,但這似乎是正確的任何人?

+1

不,看看哪裏有'WHERE'被允許;也沒有什麼可以數(_hint hint_)「多少」......並且引用一個不存在的表。 – Uueerdo

+1

你幾乎肯定不想要一個FULL JOIN。什麼是「學生」表?與「學生」不一樣?在你的問題中沒有提到。並且爲什麼要將「RoleID」字段加入「CourseID」。它們似乎不匹配,或者是 – ADyson

+1

'mysql'和'tsql'標籤通常不兼容。你需要一種適用於各種SQL方言的解決方案嗎? – HABO

回答

1

哪裏應該最後。你不需要第三次加入課程表,因爲你沒有從中選擇任何東西。

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' 
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' 
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’;