2009-06-30 34 views
0

我們學校的ERP有一個令人討厭的數據庫結構,並且由於它沒有正確地標準化,所以我遇到了多次加入同一個表的問題。SQL - 加入同一行中的多個列

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

還有一個表DegreeDescription:

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

我想查詢顯示了一個學生的學位的歷史信息,但跳過

的DegreeHistory表中對一個人一個行條目有這些列程度代碼並顯示程度描述。有沒有一種方法可以讓我比做到這一點其他:

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

對於每個可能的專業,未成年人,濃度,認證的,等等......好像一個大的和醜陋的查詢(雖然簡單做)。

+0

它看起來可笑,但是的,你如何擁有它是正確的。 – Juliet 2009-06-30 22:25:48

回答

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

當然,它的醜陋,但是這就是你與非規範化的結構得到:-(