PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abfrage meherer Tabellen


Chr1s
15.12.2003, 20:18:17
Servus,

ich habe mehere Tabellen, die alle verschiedene Kategorien darstellen.
In jeder Tabelle gibt es eine Spalte "Poster" damit ich weis, wer von meiner Truppe es eingelesen hat.

Jetzt will ich aber ne Seite machen, wo steht wie viele Jeder gemacht hat.

Für eine Tabelle ist das kein Problem.



$abfrage=mysql_query("SELECT COUNT(*) AS anzahl, poster FROM tabellenname WHERE poster != '' GROUP BY poster");

$platz = 1;

while($ergebnis = mysql_fetch_array($abfrage))
{
echo "<table border='0' width='500'>";
echo " <tr>";
echo "<td width='100'>Platz : $platz</td>";
echo "<td width='200'><b>$ergebnis[poster]<b></td>";
echo "<td width='200'>$ergebnis[anzahl] Postings</td>";
echo " </tr>";
echo "</table>";
$platz++;
}



Nur wie mache ich es, dass ich die Rankingtabelle mit den Ergebnissen von allen Tabellen bekomme und nicht nur von einer?

crusader
15.12.2003, 20:28:39
Hi Chr1s,

ist der Aufbau der verschiedenen Tabellen identisch?
Wenn ja, würde ich vorschlagen die Inhalte zusammen zulegen und diese Tabelle um das Feld Kategorie zu erweitern.
Damit würdest du nicht das Problem haben, mehrer Tabellen abfragen zu müssen.

Grüße Crusader

Chr1s
15.12.2003, 20:36:07
Die Tabellen sind nicht ganz identisch. 2-3 Spalten weichen ab.
Außerdem handelt es sich insgesamt über 20000 Zeilen.

Ist es nicht möglich, mehere Abfragen zu erstellen, und das Ergebniß zusammenzufügen?

chris17
16.12.2003, 10:58:42
Hi Chr1s,

..ist vielleicht nicht die eleganteste Lösung, funktionieren sollte es aber.

$tabellen_array = array("tabelle1","tabelle2","tabelle3");

for($i = 0; $i < count($tabellen_array); $i++) {

$abfrage=mysql_query("SELECT COUNT(*) AS anzahl, poster FROM $tabellen_array[$i] WHERE poster != '' GROUP BY poster");

$platz = 1;
while($ergebnis = mysql_fetch_array($abfrage)) {
echo "<table border='0' width='500'>";
echo "<tr>";
echo "<td width='100'>Platz : ".$platz."</td>";
echo "<td width='200'><b>".$ergebnis['poster']."<b></td>";
echo "<td width='200'>".$ergebnis['anzahl']." Postings</td>";
echo "</tr>";
echo "</table>";
$platz++;
}


}

Gruss

chris17

Chr1s
16.12.2003, 16:51:39
Hi Chris17

wenn man es so macht, dann gibt er mir für jede Tabelle ein einzelnes Ranking aus.

Kann man es nicht irgendwie machen, dass $ergebnis['anzahl'] immer addiert wird?

chris17
16.12.2003, 17:02:34
Hi,

ja kannste machen, so in etwa, musst mal bissl ausprobieren....

$tabellen_array = array("tabelle1","tabelle2","tabelle3");

$gesamt = 0;

for($i = 0; $i < count($tabellen_array); $i++) {
$abfrage=mysql_query("SELECT COUNT(*) AS anzahl, poster FROM $tabellen_array[$i] WHERE poster != '' GROUP BY poster");

$platz = 1;

while($ergebnis = mysql_fetch_array($abfrage)) {
echo "<table border='0' width='500'>";
echo "<tr>";
echo "<td width='100'>Platz : ".$platz."</td>";
echo "<td width='200'><b>".$ergebnis['poster']."<b></td>";
echo "<td width='200'>".$ergebnis['anzahl']." Postings</td>";
echo "</tr>";
echo "</table>";

$platz++;
$gesamt += $ergebnis['anzahl'];
}

}
echo $gesamt;