2011-01-05 18 views
0

Faily neu zu PHP und MySQL wird dies wahrscheinlich sehr chaotisch.mysql mehrere Tabelle Abfrage innerhalb PHP-Schleife

Das ist, was ich kam mit:

$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 "..."; 
} 
} 

ich den gewünschten Wert aus jeder Tabelle bekommen, so dass x Ergebnisse auf der Menge der Tabellen abhängig. Was ich möchte, ist die Ergebnisse der abgefragten Tabellen zu haben, aber nur die Top 10-5 sortiert nach Datum/Zeit.

Ist dies mit dem aktuellen Skript möglich? Gibt es einen einfacheren Weg (während sich die Anzahl der Tische ständig ändert)? Ist diese Abfrage-Methodendatenbank intensiv?

Prost!

+0

was ist das ziel hier? echo (keine Sorge für die Speicherung in PHP var) einige Felder aus den letzten X Zeilen, die die maximalen Bedingungen von irgendwelchen Tabellen erfüllen, die mit 'was auch immer' beginnen? –

+0

Wenn x = 100 Tabellen, bekomme ich einen Wert (s)/Ausgabe pro Tabelle, ich will nur 10 von 100 Tabellen, die 10 ist die neueste. – Alfie

Antwort

0

Ich rufe ständig wechselnde Anzahl von Tabellen mit ähnlicher Struktur einen Konstruktionsfehler. auch Abfrage wechseln zu

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

ist ein wenig Entlastung der Datenbank.

+0

Danke für die Antwort, leider löst das mein Problem nicht. Bestimmte Seiten auf meiner Website fungieren als Minidatenbanken. Wenn eine Seite geladen wird, wird die entsprechende Tabelle abgefragt. Ich hatte zwar eine einzige Tabelle, war aber besorgt, dass das Abfragen einer riesigen Datenmenge bei jedem Laden einer Seite nicht gut war, d. H. Mein Problem. Es sei denn, eine einzelne Tabelle hat keinen massiven Effekt auf die Effizienz. – Alfie

+0

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

+0

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