2012-04-27 13 views
1

次の3つの結果の合計をカウントしようとしていますが、1つの結果のみがカウントされています。select count(*)が正しいカウントを返さない

$sql = "(SELECT COUNT(*) FROM table1 WHERE somecondition) 
UNION 
(SELECT COUNT(*) FROM table2 WHERE somecondition) 
UNION 
(SELECT COUNT(*) FROM table3 WHERE somecondition)"; 

誰もが

答えて

5

あなたのクエリは3つの別々のカウントで、3行を返しますhelp.thanksことができます。何をしたい

はあなたのクエリがテーブルに対して3 rows-それぞれを返します

select sum(c) from (
     (SELECT COUNT(*) AS c FROM table1 WHERE somecondition) 
     UNION 
     (SELECT COUNT(*) FROM table2 WHERE somecondition) 
     UNION 
     (SELECT COUNT(*) FROM table3 WHERE somecondition) 
) all_three 
+1

+1すべての3つのテーブルのすべての数の合計にしたいと派生テーブルの別名を忘れてはいけない場合。 –

+0

@PaulBellora:ありがとう。そのようです? – Thilo

+1

完璧! http://sqlfiddle.com/#!2/82ed0/8 –

-1

です。このクエリの代わりに

用途:

$sql = "SELECT SUM(C) FROM(
(SELECT COUNT(*) as C FROM table1 WHERE somecondition) 
UNION 
(SELECT COUNT(*) as C FROM table2 WHERE somecondition) 
UNION 
(SELECT COUNT(*) as C FROM table3 WHERE somecondition) 
)"; 

+0

私はmysqlを使用しています。私は初心者で、mysql/phpを学んでいます。私は上記を試みたが、まだ動作していない、私は何かが不足している? – sanjay

0

あなたはこのような何かを試すことができます....

SELECT sum(
(SELECT count(*) from table1) 
+ (SELECT count(*) from table2) 
+ (SELECT count(*) from table3) 
+ (SELECT count(*) from table4))as total from dual 
(あなたがチューニングするために使用しているデータベースに応じて、クエリを必要とします)
+0

このクエリは実行中で、動作しています – Addicted

0

異なるフィールドとしてすべてのテーブルの数を検索している場合..

SELECT (SELECT count(*) FROM table_1) As first_count, 
     (SELECT count(*) FROM table_2) As second_count, 
     (SELECT count(*) FROM table_3) As third_count 

そして

SELECT SUM ((SELECT count(*) FROM table_1) + 
     (SELECT count(*) FROM table_2) + 
     (SELECT count(*) FROM table_3)) AS total_count 
関連する問題