2013-07-22 64 views
-1

我工作的一所大學作爲學生工作者的IT部門,並在使用SQL非常有限的知識(我不是在計算機科學/工程專業)。我會盡我所能來描述我想在這裏完成的事情。合併SQL視圖

我希望創建一個包括有關新的學生,基本信息表:ID,姓,名,需要考試(Y/N),Course101部分,講師。

我的問題是,交流和轉讓的學生,還有一些一年級學生就不用/沒有報名參加Course101,所以使用WHERE studnt_course = 'Course101%'將漏下的學生。我想按照我的觀點挑選那些學生,並顯示他們的課程101部分,教師值爲空。

我正在考慮做兩個意見,一個爲所有新的學生和一個學生只有Course101,並做一些併購/聯盟的,但不知道如何真正做到這一點。

任何幫助將不勝感激!

+0

不知道該怎麼辦呢?提出意見或將它們與'工會'結合? – GolezTrol

+1

請[編輯](http://stackoverflow.com/posts/17796909/edit)你的問題,並添加表格架構,樣本數據和所需的輸出來說明你的問題。 – peterm

+0

我很好用任何方法。只是想弄清算法。再次,我想在這裏完成的事情是挑選沒有Course101的學生,並將他們的教師和部分值顯示爲Null。 – user2608238

回答

2

它仍然是一個有點模糊當前有哪些表實際上看起來像這使得它很難給出一個很好的建議。

根據您給我們的建議,我建議您查看LEFT INNNER JOIN,這樣可以將NULL放在兩張表不重疊的位置。

如果你有興趣學習數據庫設計(而不是僅僅解決這方面的問題),我會建議尋找到合適的數據庫設計。

+0

感謝您的建議,JBarberU!由於數據和表格的結構,我終於發現全外聯接在這種情況下會起作用。 – user2608238

0

創建兩個查詢。一個爲101名學生,另一名爲海外/轉學(如果需要的話,你需要制定WHERE子句) 讓每個人都滿意。

如果每一件事情距WHERE子句相同,則: 然後抓住每一個條件,括號內包裝他們,把一個或兩者之間,它放入一個查詢 因此,像:

SELECT Name, Id,ShoeSize 
FROM Students 
WHERE (studnt_course = 'Course101%') OR (transferred = 1 OR is_exchange = 1) 

即,因此,所有的學生WHERE <this> OR <that>是真的

其他明智的(例如,使用不同勢表): 確保在你的SELECT語句,你是選擇相同的列名 如果一個列有相同的信息,但請撥打以下不同的東西:

<columnName> AS <NameYouWantToCallIt> 

確保列名的順序相同。 然後在兩個查詢之間放置單詞UNION。

這將結合兩個查詢的結果(並刪除重複項)。

SELECT Name, Id, ShoeSize 
FROM Students 
WHERE studnt_course = 'Course101%' 

UNION 

SELECT Name, Id, FootSize AS ShoeSize 
FROM exchangeStudents 
WHERE transferred = 1 OR is_exchange = 1