2015-03-13 81 views
0

在數據庫(導師簡介)不同的價值,每位教師可以教高達3個科目,所以我創建了3 fields-- Subject1Subject2 & Subject3 - 每個導師。在我的情況下,我想檢索3個字段中的每個特定主題,並將它們添加到我的程序中的組合框中以獲得標準搜索功能。SQL如何選擇多個字段

最初,我用下面的代碼爲3個不同的字段:

Dim sqlSubjectComboBox As String = "SELECT DISTINCT [TutorSubject1] FROM tblTutor" 
Dim cmdSubjectComboBox As New OleDbCommand(sqlSubjectComboBox, myConnection) 
dr = cmdSubjectComboBox.ExecuteReader 
While dr.Read() 
    cbSubject.Items.Add(dr("TutorSubject1").ToString) 
End While 

然而,我意識到,如果一個相同被攝體放置在不同的領域不同導師此SQL語句將創建一個邏輯錯誤。

例如:導師A在其領域Subject1上有「化學」科目。而對於導師B,他在Subject2領域有相同的主題「化學」。最後,組合框有兩個「化學」。

我花了將近一天的時間來解決這個問題,但效果很好,部分原因是由於我的欠佳編程技巧和缺乏經驗。希望有人能幫助我,謝謝!

+2

你應該有3行,而不是3列... – jarlh 2015-03-13 12:12:04

+0

理想情況下,你應該有一個單獨的主題表。查看聯合查詢來規範化數據。 – Fionnuala 2015-03-13 12:12:49

回答

2

您可以使用UNION運算符來獲取不同的主題列表。

select TutorSubject1 FROM tblTutor where TutorSubject1 is not null 
union 
select TutorSubject2 FROM tblTutor where TutorSubject2 is not null 
union 
select TutorSubject3 FROM tblTutor where TutorSubject3 is not null 

這裏重要的一點是,UNION操作符刪除重複項。