2016-12-16 15 views
2

私はattr3 = 1を持つレコードの数を数えます。2つのステートメントで結合を使用する方法は?

SELECT 'Dept' AS table_name, COUNT(*) 
FROM ((select attr3 from table1) union all 
     (select attr3 from table2) 
    ) t 
WHERE attr3 = '1'; 

は今、私は同じことを行いますがattr3 = 2を持っているレコードの数をカウント別のステートメントを持っている必要があります。

SELECT 'Dept' AS table_name, COUNT(*) 
    FROM ((select attr3 from table1) union all 
      (select attr3 from table2) 
     ) t2 
    WHERE attr3 = '2'; 

理想的データは、私は文は別に、私は単にそれらを一緒に参加したいならば、このメソッドの動作

Dept   count(*) 
attr3 = 1   4 
attr3 = 2   6 

この形式で表示されます。誰も助けることができますか?

+0

これが最善の提案ですが、私が正しくあなたを理解していた場合、あなたは多分、サブクエリ内の2つをラップすることができ、その後はデカルト積彼ら、そして唯一の1秒を選択した場合はわかりませんと2s – Abdul

+0

'OR'演算子を使用してください - ' WHERE attr3 = '1' OR attr3 = '2'' – Takarii

答えて

2

単純GROUP BYWHERE attr3 in()で十分です。

SELECT Z.attr3 as Dept, count(*) as cnt 
FROM (SELECT attr3 FROM table1 
     UNION ALL 
     SELECT attr3 FROM table2) Z 
WHERE attr3 in ('1','2') 
GROUP BY Z.attr3 

attr3は、where句を経由して、あなたがそれで、するだけでグループをカウントし、労働組合の後にあなたの1,2に結果を制限したいグループを定義するので。

0

グループでは仕事をします。

SELECT 'Dept' AS table_name, COUNT(*) 
FROM ((select attr3 from table1) union all 
     (select attr3 from table2) 
    ) t2 
WHERE attr3 = '2' 
group by dept; 

http://www.w3schools.com/sql/sql_groupby.asp

+0

閉じるが、これはどのようにグループ1のattr3のレコードを返しますか?このように見えるのは、グループ2のattr3だけです。 – xQbert

関連する問題