2017-03-05 11 views
3

以下のクエリを1つのテーブルに結合したいが、 'union'の結果を1つのカラムにマージする。私はそれが図のようなものの代わりに別の列を作成したい。
どのように達成できますか?
mysqlは2つ以上のselectを1つのテーブルにマージする

私はこのようなクエリがある:

(select count(*) as col_1 
    from ref_A 
    inner join ref_B 
    on ref_A.id_A= ref_B.id_A 
    inner join ref_C 
    on ref_C.id_C= ref_B.id_C 
    group by ref_C.id_C) 
union all 

(select count(*) as col_2 
    from ref_B 
    inner join ref_C 
    on ref_C.id_C= ref_B.id_C 
    group by ref_C.id_C) 

_________________ 
| col_1 | col_2 | 
|_______|_______| 
|1  |$ 2,00 | 
----------------- 
|2  |$ 3,50 | 
----------------- 
+0

ユニオンクエリを作成するときに両方のselectステートメントで列名を同じにして、区別したい場合は両方のクエリの静的識別子を追加する – rahulsm

+0

@rahul_mどうすればよいですか?あなたは私に例を与えてもいいですか? –

答えて

1

(select count(*) as col_1, 'table 1' as ident 
    from ref_A 
    inner join ref_B 
    on ref_A.id_A= ref_B.id_A 
    inner join ref_C 
    on ref_C.id_C= ref_B.id_C 
    group by ref_C.id_C) 
union all 

(select count(*) as col_1, 'table 2' as ident 
    from ref_B 
    inner join ref_C 
    on ref_C.id_C= ref_B.id_C 
    group by ref_C.id_C) 

、これを試してみてください、ここで2つのクエリからのデータをマージ習慣identを、クエリデータは、同一の行がある場合にのみ、マージ取得します見つかりました。

関連する問題