2011-11-09 5 views
2

と私は次のような答えに出くわしました2つ以上のテーブルに対応しています。現在のコードは次のとおりです。COUNT(*)複数のテーブル

SELECT COUNT(*), 
(SELECT COUNT(*) FROM TABLE1), 
(SELECT COUNT(*) FROM TABLE2), 
(SELECT COUNT(*) FROM TABLE3), 
(SELECT COUNT(*) FROM TABLE4), 
(SELECT COUNT(*) FROM TABLE5), 
(SELECT COUNT(*) FROM TABLE6), 
(SELECT COUNT(*) FROM TABLE7), 
(SELECT COUNT(*) FROM TABLE8), 
(SELECT COUNT(*) FROM TABLE9), 
(SELECT COUNT(*) FROM TABLE10), 
(SELECT COUNT(*) FROM TABLE11), 
(SELECT COUNT(*) FROM TABLE12), 
(SELECT COUNT(*) FROM TABLE13), 
(SELECT COUNT(*) FROM TABLE14), 
(SELECT COUNT(*) FROM TABLE15), 
(SELECT COUNT(*) FROM TABLE16), 
(SELECT COUNT(*) FROM TABLE17), 
(SELECT COUNT(*) FROM TABLE18) 
FROM TABLE19 

ただし、TABLE1とTABLE19のみカウントされます。私はすべてのテーブル(TABLE1-18)とTABLE19を数えなければなりません(うまくいけば、最初の例に似た構造を使います)。

+2

使用しているデータベースとバージョンは何ですか? –

+2

私はここで間違った問題を解決していると思います。なぜこのクエリを行う必要がありますか? –

+0

このタスクを実行するためには、より効率的な方法が必要です。 @MarkByersの質問に+1します。 –

答えて

2

を...

Oracleのような何か:

Select (select count(*) from table1) as table1Count, 
     (select count(*) from table2) as table2Count 
from dual 

それはSQL Serverの場合は、二重から離れるだけです。あなたがコメントでMySQLを使用している言及したので

EDIT

Get record counts for all tables in MySQL database

+1

リンクからのソリューションを使用しました。より効率的なアプローチであるMySQLソリューションの場合は – Matt

+0

+1です。 –

2

使用エイリアスの列には、固有の名前があるように:これは、それがわずかに変化する可能性があるDBに応じて

SELECT 
    (SELECT COUNT(*) FROM TABLE1) AS count_table1, 
    (SELECT COUNT(*) FROM TABLE2) AS count_table2, 
    (SELECT COUNT(*) FROM TABLE3) AS count_table3, 
    etc.. 
    (SELECT COUNT(*) FROM TABLE19) AS count_table19 
+0

+1を使用すると、問題がカウントを取得することになったと思われます。 –

0

あなたが行ではなく、列の結果を受け入れるように満足している場合、あなたは常にUNIONを使用することができます:

SELECT "table1", COUNT(*) FROM table1 UNION       
SELECT "table2", COUNT(*) FROM table2 UNION       
SELECT "table3", COUNT(*) FROM table3 

など

0

MySQLの場合:

select sum(total) from(
select count(*) as total from Table1 
union 
select count(*) as total from Table2) as a; 
関連する問題