Sql server SQL-在同一行中的多个列上联接

Sql server SQL-在同一行中的多个列上联接,sql-server,join,Sql Server,Join,我们学校的ERP有一个令人讨厌的数据库结构,因为它没有正确地规范化,我有一个问题,多次加入同一个表 DegreeHistory表的一行条目中包含以下列: |Major1|Major2|Major3|Minor1|Minor2|Minor3| -------|------|------|------|------|------| CMPT BUSI 还有另一个表degree说明: |DegreeCode|DegreeDesc | -----------

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

DegreeHistory表的一行条目中包含以下列:

|Major1|Major2|Major3|Minor1|Minor2|Minor3|
-------|------|------|------|------|------|
 CMPT                 BUSI
还有另一个表degree说明:

|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 ...

对于每个可能的专业、未成年人、集中度、证书等。。。看起来像是一个大而难看的查询(虽然很简单)。

你的思路正确,只是一点小小的改变…:

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

当然,这很难看,但这就是非规范化结构的结果:-(

看起来很可笑,但是,是的,你如何得到它是正确的。