【问题标题】:SQL How to select distinct value from multiple fieldsSQL如何从多个字段中选择不同的值
【发布时间】:2015-03-13 12:10:26
【问题描述】:

在(导师资料的)数据库中,每位导师最多可以教授 3 个科目,因此我为每位导师创建了 3 个字段--Subject1,Subject2 & Subject3--。就我而言,我想检索 3 个字段中的每个特定主题,并将它们添加到我的程序中的组合框中,以实现条件搜索功能。

最初,我将以下代码用于 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 领域拥有相同的主题“化学”。最后,组合框有两个“化学”。

我花了将近一天的时间来解决这个问题,但最终还是成功了,部分原因是我的编程技能不佳和缺乏经验。希望有人可以帮助我,在此先感谢!

【问题讨论】:

  • 你应该有 3 行,而不是 3 列...
  • 理想情况下,您应该有一个单独的主题表。查看联合查询以规范化您的数据。

标签: sql ms-access select field distinct


【解决方案1】:

您可以使用 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 运算符删除重复项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2016-11-23
    • 2013-02-02
    相关资源
    最近更新 更多