2016-09-28 14 views
2

テーブル:私はそれを使用してSQLを介して、またはプログラムによって、次のグループ化を達成することが可能かどうかを知りたい複数行ごとにグループ

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

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

私はleft outer join b on a.class_id = b.class_id

結果をしました上の結果データセット?

ORG: ENGLISH 
    ----------------- 
    English 101  
    English 220   
    Communication 360 
    History 362 
    English 366 
    ----------------- 
ORG: HISTORY 
    ----------------- 
    English 366 
    History 362 
    ----------------- 
    COMM 
    ----------------- 
    Communication 360 
  • ENGLISH ORG1またはORG2を持つ任意のクラスはENGLISH組織の下に表示されるはずです。
  • HISTORY org1またはorg2を持つクラスは、HISTORY orgの下に表示されます。
  • COMM org1またはorg2を持つクラスは、COMM orgの下に表示されます。
  • 他の組織(Communication 360はENGLISH/COMMの両方)を持っている場合、の下に ENGLISH orgとCOMM orgの両方に表示されます。

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

    ORDER BY結果に適用されます:あなたはサブクエリを必要としない

    (ゴードン):

    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 
    

    EDIT:

答えて

3

UNIONを使用しますunion all

+1

サブクエリは不要です。 –

関連する問題