1

次の 3 つの結果すべての合計を数えようとしていますが、1 つの結果しか数えられません。

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

誰でも助けてくれますか?

4

4 に答える 4

5

クエリは、3つの別々のカウントで3つの行を返します。

あなたが欲しいのは

  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
于 2012-04-27T05:12:28.957 に答える
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

そして、3つのテーブルすべてのすべてのカウントを合計したい場合は、

SELECT SUM ((SELECT count(*) FROM table_1) +
       (SELECT count(*) FROM table_2) +
        (SELECT count(*) FROM table_3) ) AS total_count
于 2012-04-27T13:39:35.063 に答える
0

このようなものを試すことができます....

SELECT sum(
 ( SELECT count(*) from table1)
+ ( SELECT count(*) from table2)
+ ( SELECT count(*) from table3)
+ ( SELECT count(*) from table4) )as total from dual
于 2012-04-27T05:15:36.500 に答える
-1

クエリは、テーブルごとに 3 つの行を返します。

代わりに次のクエリを使用してください。

$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)
)";

(使用しているデータベースに応じてクエリを調整する必要があります)

于 2012-04-27T05:13:58.487 に答える