簡體   English   中英

連接兩個查詢結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM