2009-06-30 12 views
0

私たちの学校のERPは、それに対して厄介なデータベース構造を持っており、正しく正規化されていないため、同じテーブルに複数回結合することに問題があります。学生の学位履歴情報が、スキップを示し、私は、クエリをしたいSQL - 同じ行の複数の列で結合する

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

:別のテーブルのDegreeDescriptionあり

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

DegreeHistory表には、人のための1つの行のエントリでこれらの列を持っています度コードと代わりに度の説明を表示します。可能専攻、未成年者、濃度、認証のそれぞれについて

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

答えて

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

は、確かにそれは醜いですが、それはあなたがそれはばかげて見える

関連する問題