2011-01-05 6 views
0

FailyはPHPとMySQLに新しい、これはおそらく非常に混乱しているようです。これは私が思い付いたものですPHPのループ内のmysqlの複数のテーブルクエリ

$query = "show tables like 'whatever%'"; 
$result = mysql_query($query); 
$num_results = mysql_num_rows($result); 

for ($i = 0; $i < $num_results; $i++) 
{ 
$row = mysql_fetch_array($result); 
$sql=mysql_query("SELECT * FROM ". $row[0] ." WHERE a=(SELECT MAX(a)) AND b=(SELECT MAX(b)) AND c LIKE 'd%' ORDER BY date DESC LIMIT 1"); 


while($info=mysql_fetch_array($sql)){ 
    echo "..."; 
} 
} 

結果は、テーブルの量に応じて、Xので、私は、各テーブルから目的の値を取得します。私が望むのは、照会されたテーブルの結果を持つことですが、日付/時刻順に上位10-5を表示するだけです。

これは現在のスクリプトで可能ですか?簡単な方法はありますか(テーブルの数は絶えず変化しています)?このクエリ方法のデータベースは強くなっていますか?

乾杯!

+0

ここでの目標は何ですか?エコー(php varに保存する気にならない) 'whatever'で始まるテーブルからの最大条件を満たすX個の最も最近の行からのいくつかのフィールド? –

+0

x = 100のテーブルの場合、テーブルごとに値/出力が得られます。100個のテーブルのうち10個だけが必要です。 – Alfie

答えて

0

構造が類似している表の数が絶えず変更されているということは、設計上の誤りです。また、クエリスイッチを

$sql=mysql_query("SELECT * FROM $tbl WHERE c LIKE 'd%' ORDER BY a DESC, b DESC, date DESC LIMIT 1"); 

に少し変更してもらえます。

+0

答えをありがとう、残念ながらそれは私の問題を解決しません。私のサイトの特定のページはミニデータベースとして動作し、ページがロードされると、ページに対応するテーブルが照会されます。私は単一のテーブルを持っていましたが、ページが読み込まれるたびに膨大な量のデータを照会するのは良いことではない、つまり私の問題ではないかと心配していました。当然のことながら、単一のテーブルが効率的に大きな影響を及ぼさないかぎり? – Alfie

+0

http://dev.mysql.com/doc/refman/5.1/en/partitioning.html –

+0

http://dev.mysql.com/doc/refman/5.1/en/mysql-indexes.html –

関連する問題