SQL - 连接同一行中的多个列

时间:2009-06-30 22:18:45

标签: sql-server join

我们学校的ERP有一个令人讨厌的数据库结构,因为它没有正确规范化,我有一个多次加入同一个表的问题。

DegreeHistory表将这些列放在一个人的一行条目中:

|Major1|Major2|Major3|Minor1|Minor2|Minor3|
-------|------|------|------|------|------|
 CMPT                 BUSI

还有另一张表DegDescription:

|DegreeCode|DegreeDesc      |
-----------|-----------------
CMPT       |Computer Science
BUSI       |Business

我希望查询显示学生的学位历史信息,但会跳过学位代码并显示学位描述。有没有办法可以做到这一点:

SELECT dd.DegreeDesc, dd1.DegreeDesc FROM DegreeHistory dh
LEFT JOIN DegreeDescription dd ON dd.DegreeCode = dh.Major1
LEFT JOIN DegreeDescription dd1 ON dd1.DegreeCode = dh.Major2 ...

对于每个可能的专业,未成年人,集中,认证等...似乎是一个大而丑陋的查询(虽然很简单)。

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上,只是稍微改变一下......:

SELECT dd.DegreeDesc, dd1.DegreeDesc FROM DegreeHistory dh
LEFT JOIN DegreeDescription ON DegreeCode = dh.Major1 dd
LEFT JOIN DegreeDescription ON DegreeCode = dh.Major2 dd1 ...

当然它很难看,但这就是非标准化结构的结果: - (