2017-11-15 6 views
0

で同じテーブルにカウントを表示二つのテーブルからのカウントと、私は、主キー、列(名色)を持つ2つのテーブルを持っているMYSQL

Table1 
|Color| 
|red | 
|green| 
|blue | 

Table2 
|Color| 
|red | 
|red | 
|green| 

私は

SELECT (
     SELECT COUNT(*) 
     FROM table1 
     ) AS count1, 
     (
     SELECT COUNT(*) 
     FROM table2 
    ) AS count2 

が、これを試してみました私のような色でグループ化された出力を得ることができますどのように

count1|count2| 
3 |3  | 

を与えます
|Color|count1| count2 
|red | 1 |2 
|green| 1 |1 
|blue |1  |0 
+0

結果セットのidカラムで労働組合とグループを使用することができます。 – Strawberry

答えて

1
SELECT 
     color 
    , MAX(CASE WHEN tabl = 'T1' THEN count_of END) count1 
    , MAX(CASE WHEN tabl = 'T2' THEN count_of END) count2 
FROM (
     SELECT 'T1' tabl, Color, COUNT(*) count_of FROM table1 GROUP BY Color 
     UNION ALL 
     SELECT 'T2' tabl , Color , COUNT(*)  FROM table2 GROUP BY color 
    ) d 
GROUP BY color 
1

こんにちはSRI単にあなたは意味の全体の多くを作成しません

select id,color, sum(coun_t) as counts from (
    (SELECT id,color,count(*) as coun_t FROM `table1` group by color) 
      union 
    (SELECT id,color,count(*) as coun_t FROM `table2` group by color) 
) as p group by color order by id asc 
+0

'union'は重複した行を削除できますが、その場合は合計が不正確になります。この答えは' union all'を使う必要があります。また、質問では1つの合計を求めるのではなく、2つの列を求めます。 –

関連する問題