[英]Joining two query results
我有以下表格:
類:
Class_ID (PK)
Class
Section_ID
部分:
Section_ID (PK)
Section
Teacher_ID
學科:
Subject_ID (PK)
Subject_Name
Section_ID
分數:
Student_ID (CK)
Subject_ID (CK)
學生:
Student_ID (PK)
Student_Name
Section_ID
老師:
Teacher_ID (PK)
Teacher_Name
Subject_ID
我生成了以下兩個查詢,
這個用於顯示每個班級和每個部分的每個學生的分數
SELECT
Marks.Student_ID, Class, Section.Section, Subject.Subject_Name, Marks.Marks
FROM
Marks, Student, [Section], Class, Subject
WHERE
Marks.Student_ID=Student.Student_ID
AND Student.Section_ID = Section.Section_ID
AND Section.Section_ID = Class.Section_ID
AND Marks.Subject_ID = Subject.Subject_ID
GROUP BY
Marks.Student_ID, Section.Section_ID, Section.Section, Class.Class, Marks.Marks, Subject.Subject_Name
這是在每個學科中獲得最高分的課程
SELECT
Class.Class, Subject.Subject_Name,MAX(Marks.Marks) AS Total_Marks
FROM
Marks, Class, Student, [Section], Subject
WHERE
Marks.Student_ID = Student.Student_ID
AND Student.Section_ID = Section.Section_ID
AND Section.Section_ID = Class.Section_ID
AND Marks.Subject_ID = Subject.Subject_ID
GROUP BY
Class.Class, Subject.Subject_Name
我想生成一個查詢,該查詢可以顯示第二個查詢的student_id,該查詢在每個學科的每個班級中得分最高
我想加入前兩個查詢可以解決問題,但由於我剛開始學習SQL和MS Access,因此其他建議也很受歡迎。
根據6月7日的評論,您可能應該使用INNER JOINs而不是這些交叉聯接,但是兩者都可以,並且這只是一種味道。
而且您已經正確了,因為您只想連接兩個查詢。 您的最高分查詢僅需要返回ID字段,而不需要返回任何文本,然后將其作為子查詢包含在您的第一個查詢中。
如果您在Access中使用保存的查詢,那么“查詢”構建器將使其非常容易可視化。
如果不是,並且您要使用SQL,則通過將子查詢的SQL代碼放在方括號中,然后為其指定別名來插入子查詢。 然后,您可以將其像桌子一樣對待。
FROM Marks, Student, [Section], Class, Subject, (SELECT.... ) TopMarks WHERE ... AND TopMarks.SubjectID = Subject.SubjectID AND TopMarks.ClassID = Class.ClassID
使用INNER JOINS更容易可視化。 實際上,我不記得曾經用您的加入方法這樣做過。 交叉聯接,外部聯接。 它有很多名字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.