我試圖顯示學生的名字,姓氏,SID,主要和次要。以及每個學生的課程,CID和會議時間。橋表雖然讓我感到困惑。 Idk是否做聯盟或多表加入或什麼。請幫忙!SQL UNION/JOIN?
回答
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
不應該是一個內部連接,如果有的話? – Kendall 2012-04-19 21:58:28
@肯代爾是否至少有一門課程需要學習?如果是,它可以是'INNER JOIN'。如果沒有課程相關的學生可以使用'LEFT JOIN',否則這些學生不會在結果集中。 – 2012-04-19 22:00:13
甲骨文語法:
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
由於這是功課,而不是回答你的問題直接,我會提供你一些提示。
你應該真的考慮審查UNION
和JOINs
。
當您希望在同一數據集中返回多個查詢時使用UNION。它們必須在每個字段中具有相似的數據類型,並且在每個查詢中具有相同數量的字段。所以對於這個特定的問題,使用UNION
是否合理?可能不會,因爲你希望學生和他們的課程排成一行。
對於此類查詢,您需要一個JOIN
。有一個真正有用的JOIN視覺解釋可以在線獲得。我建議在學習SQL時保持它的方便。
A Visual Explanation of SQL Joins
由於需要學生的數據和他們的課程信息,您可以得到的唯一方式是使用tblRegistration
。如果你使用這個表格,在你的查詢中你應該得到你正在查找的結果。
編輯:
由於評論者指出,第二個圖是UNION
不是JOIN
,我在這裏不同意就是一個例子來證明這一點。
如上所述的A UNION
將兩個查詢組合成單個結果集。這是一個帶UNION演示一個sqlfiddle:
完全外連接指定從左邊或右邊表中的行不符合聯接條件包括在結果集,輸出列與其他表對應的設置爲NULL
。這是通常由INNER JOIN
返回的所有行的補充。這是一個帶FULL OUTER JOIN演示一個sqlfiddle:
正如你可以看到這兩個查詢的產品是不一樣的,所以圖中的FULL OUTER JOIN
不是UNION
。
- 1. SQL - 在T-SQL
- 2. SQL:使用SQL
- 3. SQL - 在SQL
- 4. SQL:在SQL
- 5. sql server sql case
- 6. LINQ:No SQL to SQL
- 7. SQL - 如何從SQL
- 8. SQL Express vs SQL Plus
- 9. T-SQL(Microsoft SQL Server)
- 10. SQL bcp from SQL fie
- 11. SQL查詢(T-SQL)
- 12. PL/SQL動態SQL
- 13. SQL/SQL-LITE - 過濾
- 14. 動態SQL | PL/SQL
- 15. SQL語句 - SQL Matrix
- 16. SQL表到SQL表
- 17. SQL連接和SQL
- 18. SQL Server模式SQL
- 19. PL SQL動態SQL
- 20. SQL 2000到SQL 2008
- 21. Statement.execute(sql)vs executeUpdate(sql)and executeQuery(sql)
- 22. SQL
- 23. SQL -
- 24. SQL -
- 25. SQL
- 26. SQL。
- 27. SQL
- 28. SQL -
- 29. SQL
- 30. sql
你有沒有試圖使用這兩種方法來創建查詢 - 你發現了什麼? – 2012-04-19 21:27:20
Yesss :)但這是最後一個問題哈哈。如果這對任何東西都有效 我嘗試過創建一個UNION,但它說我需要在目標列表中有相同數量的表達式。 – Kendall 2012-04-19 21:27:39
我們被允許接受外界的幫助。 – Kendall 2012-04-19 21:31:00