2015-03-13 198 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操作符删除重复项。