2012-04-19 96 views
0

我試圖顯示學生的名字,姓氏,SID,主要和次要。以及每個學生的課程,CID和會議時間。橋表雖然讓我感到困惑。 Idk是否做聯盟或多表加入或什麼。請幫忙!SQL UNION/JOIN?

enter image description here

+0

你有沒有試圖使用這兩種方法來創建查詢 - 你發現了什麼? – 2012-04-19 21:27:20

+0

Yesss :)但這是最後一個問題哈哈。如果這對任何東西都有效 我嘗試過創建一個UNION,但它說我需要在目標列表中有相同數量的表達式。 – Kendall 2012-04-19 21:27:39

+0

我們被允許接受外界的幫助。 – Kendall 2012-04-19 21:31:00

回答

0
SELECT * 
FROM tblStudent AS s 
LEFT OUTER JOIN tblRegistration AS r 
    ON s.SID = r.SID 
LEFT OUTER JOIN tblCourse AS c 
    ON c.CID = r.CID 
+0

不應該是一個內部連接,如果有的話? – Kendall 2012-04-19 21:58:28

+0

@肯代爾是否至少有一門課程需要學習?如果是,它可以是'INNER JOIN'。如果沒有課程相關的學生可以使用'LEFT JOIN',否則這些學生不會在結果集中。 – 2012-04-19 22:00:13

0

甲骨文語法:

SELECT stu.FirstName, 
     stu.LastName, 
     stu.Major, 
     stu.Minor, 
     reg.SID, 
     cou.CID, 
     cou.MeetingTime 
FROM 
     tblStudent as stu, 
     tblRegistration as reg, 
     tblCourse as cou 
WHERE 
     stu.SID(+) = reg.SID 
     and reg.CID = cou.CID 
3

由於這是功課,而不是回答你的問題直接,我會提供你一些提示。

你應該真的考慮審查UNIONJOINs

當您希望在同一數據集中返回多個查詢時使用UNION。它們必須在每個字段中具有相似的數據類型,並且在每個查詢中具有相同數量的字段。所以對於這個特定的問題,使用UNION是否合理?可能不會,因爲你希望學生和他們的課程排成一行。

對於此類查詢,您需要一個JOIN。有一個真正有用的JOIN視覺解釋可以在線獲得。我建議在學習SQL時保持它的方便。

A Visual Explanation of SQL Joins

由於需要學生的數據和他們的課程信息,您可以得到的唯一方式是使用tblRegistration。如果你使用這個表格,在你的查詢中你應該得到你正在查找的結果。

編輯:

由於評論者指出,第二個圖是UNION不是JOIN,我在這裏不同意就是一個例子來證明這一點。

如上所述的A UNION將兩個查詢組合成單個結果集。這是一個帶UNION演示一個sqlfiddle:

Fiddle 1

完全外連接指定從左邊或右邊表中的行不符合聯接條件包括在結果集,輸出列與其他表對應的設置爲NULL。這是通常由INNER JOIN返回的所有行的補充。這是一個帶FULL OUTER JOIN演示一個sqlfiddle:

Fiddle2

正如你可以看到這兩個查詢的產品是不一樣的,所以圖中的FULL OUTER JOIN不是UNION

+0

謝謝:)但我不知道如何合併橋表 – Kendall 2012-04-19 21:59:13

+0

您有具體問題嗎?然後我可以指出你正確的方向。 – Taryn 2012-04-19 22:03:10

+0

@onedaywhen我不同意。完整的外部連接與UNION不同,請參閱我的編輯原因。此外,這種視覺解釋不是由我撰寫的,並且已經在這裏引用了100次,因此只是搜索文章名稱。我用它作爲參考來顯示差異。如果您認爲它們是相同的,請解釋原因。 – Taryn 2012-04-20 11:20:52