$STH_1 = $DBH_R->query("SELECT table_name
FROM information_schema.tables
WHERE table_name
LIKE 'v_c_ei\_9%'
");
$stmts_1 = array();
while (($row_1 = $STH_1 -> fetch_assoc()) !== null){
$table_name = $row_1['table_name'];
$stmts_1[] = sprintf("SELECT *
FROM $table_name
WHERE (ei_code = '1117') AND (DAY(date_time) != '00')
");
}
$stmt_1 = implode("\nUNION\n", $stmts_1);
$stmt_1 .= "\nORDER BY date_time ASC";
$STH_5_2 = $DBH_R->query($stmt_1);
while (($row_5_2 = $STH_5_2 -> fetch_assoc()) !== null){
OK、上記のスクリプトは問題なく動作しています。しかし、その機能を変更したい (しなければならない)。UNION (ORDER BY ... LIMIT のようなもの) の前に選択を行う必要がありますが、これは機能していません。解決策は、sprintif を UNION & UNION & UNION に変更することです... しかし、問題は、テーブルの数がわからないことです。
最初のクエリのテーブル名は次のようになります
v_c_ei_9001
v_c_ei_9002
..........
v_c_ei_9030
..........
ect.
qよりも:テーブルの数がわからない場合に、sprintif(およびおそらく配列$ stmts_1も)を上からUNIONに変更するにはどうすればよいですか?ありがとう