5つのテーブルのフィールド数を数えて結果を表示したいと思っています。私は現在、単一のテーブルに対してこれを行っています
$variable = mysql_num_rows(mysql_query("SELECT id FROM table1"));
、、、およびid
からすべてを含めてカウントする最も効率的な方法は何ですか?table2
table3
table4
table5
ありがとう
UNION ALL
すべてのテーブルのクエリを組み合わせて、SELECT
すべてのテーブルからIDの総数を取得するために使用します。代わりに、すべてのテーブルからIDUNION
の総数を取得するために使用します。distinct
$variable = mysql_num_rows(mysql_query("
"SELECT id FROM table1 " .
"UNION ALL " .
"SELECT id FROM table2 " .
"UNION ALL " .
"SELECT id FROM table3 " .
"UNION ALL " .
"SELECT id FROM table4 " .
"UNION ALL " .
"SELECT id FROM table5"));
DBからすべての行を取得するのではなく、IDの数を取得するだけです。PHPの代わりにMySQLをカウントさせます。
$variable1 = mysql_query("SELECT COUNT(id) FROM table1");
$variable2 = mysql_query("SELECT COUNT(id) FROM table2");
$variable3 = mysql_query("SELECT COUNT(id) FROM table3");
$variable4 = mysql_query("SELECT COUNT(id) FROM table4");
$variable5 = mysql_query("SELECT COUNT(id) FROM table5");
$variable = $variable1 + $variable2 + $variable3 + $variable4 +$variable5;
UNIONもJOINも作成しないでください。カウントが必要な場合は、大変な作業です。
SELECT count(t1.id)+count(t2.id)+count(t3.id)+count(t4.id)+count(t5.id) from table1 as t1, table2 as t2, table3 as t3, table4 as t4, table5 as t5
SELECT COUNT(id) FROM table2
等
次のようなユニオン構文を試してください。
$variable = mysql_num_rows(mysql_query("
SELECT * FROM(
SELECT id FROM table1
UNION
SELECT id FROM table2
UNION
SELECT id FROM table3
UNION
SELECT id FROM table4
UNION
SELECT id FROM table5
)unionNum
"));
終わり、頑張って
最初の方法:
$query = mysql_query("
select * from(
SELECT id FROM table1
union
SELECT id FROM table2
union
SELECT id FROM table3
union
SELECT id FROM table4
)
");
while ($row = mysql_fetch_assoc($query)) {
//some operations
}
$variable = mysql_num_rows($query);
2番目の方法:
$query = mysql_query("
select count(*) cnt from(
SELECT id FROM table1
union
SELECT id FROM table2
union
SELECT id FROM table3
union
SELECT id FROM table4
)
");
while ($row = mysql_fetch_assoc($query)) {
$variable = $query['cnt'];
}