Hi,
Erst dann hab ich gelesen
Ich hoffe du hast das in eienr MySQL4 DB oder einer DB die UNION kennt -- sonst wirds nix.
Na toll, meine MYSQL-Version ist 3.x :(Hast du noch eine Idee?
Naja, ich hätte da zwar einen tricky Workaround der UNIONs für MySQL 3 nachbaut, aber vielleicht machst du dann doch der Einfachheit halber soviele Abfragen wie nötig und klebst die Ergebnisse einfach in ein PHP-Array zusammen.
'ne weitere Alternative steht weiter unten, doch zuerst:
Die SELECT Anweisungen bleiben wie gehabt, d.h. du holst dir die jeweiligen Top5 und schaufelst sie in ein Array das du dann nochmal auf PHP-Seite sortierst.
<?php
// Sammelbecken
$alleklicks = array();
// der Schleifenteil
for($count = 0; $count < $anzahl; $count++){
$sql = "SELECT url, klicks FROM $tabellen[$count] ORDER BY klicks DESC LIMIT 0, 5";
// ein assoziatives Array ist immer praktisch :-)
if ( $top5 = mysql_fetch_assoc( mysql_query($sql) ) ) {
$alleklicks[ $top5['url'] ] = $top5['klicks'];
}
}
// absteigend sortieren
rsort($alleklicks, SORT_NUMERIC);
reset($alleklicks);
$cnt = 1;
foreach ($alleklicks as $url => $klicks) {
echo "<br />Platz $cnt: $url ($klicks)";
$cnt++;
}
?>
So sollt es (auch) funktionieren.
Achtung! Könnten ein paar Schraibpfehla drin sein!
So und nu die Alternative:
mach's einfach "einfach" und leg EINE Tabelle an, in der die Klicks und URLs drinstehen, dazu ein Feld mit der Kategorie, ein paar Indizes und gut isses. Das erspart dir viel Arbeit bei zukünfigen Auswertungen oder anderen Statistiken, z.B. welche URLs wurden heute, in den letzen X Tagen etc. angeglickt. Ein paar Datumsfelder mit rein und du kannst praktisch mit einem SELECT alle Auswertungen zusammenschummeln die du glaubst so zu brauchen :-)
Auf lange Sicht ist das sicher praktikabler und MySQL muss sich nur mit einer Tabelle rumärgern anstatt einem Dutzend.
Hier findest du eine kleine "Anleitung" wie du die ganzen Tabellen schnell in eine zusammenfassen kannst: http://forum.de.selfhtml.org/?t=91161&m=547983
Viel Spaß,
CirTap