2016-09-28 42 views
2

表:組由多行

a: org1, class, class_id 
b: org2, class, class_id 

我做了left outer join b on a.class_id = b.class_id

結果:

org1 | org 2 | class 
--------+---------+------------------ 
ENGLISH | ENGLISH | English 101 
ENGLISH | ENGLISH | English 220 
ENGLISH | COMM | Communication 360 
ENGLISH | HISTORY | History 362 
HISTORY | ENGLISH | English 366 

我想知道是否有可能實現以下通過SQL分組或以編程方式使用從上面設置結果數據?

ORG: ENGLISH 
    ----------------- 
    English 101  
    English 220   
    Communication 360 
    History 362 
    English 366 
    ----------------- 
ORG: HISTORY 
    ----------------- 
    English 366 
    History 362 
    ----------------- 
    COMM 
    ----------------- 
    Communication 360 
  • 以英文ORG1或ORG2任何類應該顯示根據英國組織。
  • 任何具有HISTORY org1或org2的類都應顯示在HISTORY組織下。
  • 任何具有COMM org1或org2的類都應顯示在COMM org下。
  • 如果他們有另一個組織(通訊360是英文/通訊),它應該在下顯示英文org和COMM org。

回答

3

使用UNION

SELECT t.org, t.class 
FROM 
(
    SELECT org1 AS org, class 
    FROM a 
    UNION ALL 
    SELECT org2 AS org, class 
    FROM b 
) t 
ORDER BY t.org, t.class 

編輯:(戈登)

你不需要的子查詢:

SELECT org1 AS org, class 
    FROM a 
    UNION ALL 
    SELECT org2 AS org, class 
    FROM b 
    ORDER BY org, class; 

ORDER BY適用於結果union all

+1

你不需要子查詢。 –