2009-06-30 4 views
0

Das ERP unserer Schule hat eine unangenehme Datenbankstruktur, und da es nicht korrekt normalisiert ist, habe ich ein Problem mit der gleichen Tabelle mehrere Male beitreten.SQL - Beitritt zu mehreren Spalten in der gleichen Zeile

Die DegreeHistory Tabelle hat diese Spalten in einem Zeileneintrag für eine Person:

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

Es ist eine weitere Tabelle DegreeDescription:

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

ich eine Abfrage will einen Schüler zeigt Grad Geschichte Informationen, sondern überspringen die Grad-Codes und zeigt stattdessen die Grad-Beschreibung. Gibt es eine Weise, die ich diese andere tun können, als:

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

Für jede der möglichen Dur, Moll, Konzentrationen, Zertifizierungen, etc ... Scheint wie eine große und hässliche Abfrage (wenn auch einfach zu tun).

+0

Es sieht lächerlich, aber ja, wie du es hast ist richtig. – Juliet

Antwort

1

Sie sind in der richtigen Spur, nur ein wenig ändern ...:

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

Sicherlich ist es hässlich, aber das ist, was man mit nicht-normalisierte Strukturen erhalten :-(