Hallo,
vielleicht kann mir jemand weiterhelfen...
Ich programmiere gerade eine Anwendung womit ich Filmfehler verwalten kann. Die Schwierigkeit dabei ist, dass jeder Filmfehler einen Punktwert (je nach schwere des Fehlers) bekommt. Es soll eine Top Ten der Filme mit den meisten Fehlern (also mit dem höchsten Gesamt-Fehlerwert) und eine Top Ten der Regiesseure (auch mit den höchsten Gesamt-Fehlerwert) angezeigt werden.
Tabelle besteht aus den Spalten: ID, FILMTITEL, FEHLER, REGIE, FEHLERWERT
Ich hab das versucht so zu lösen:
Es werden also bei der ersten Abfrage die 10 Regisseure mit dem höchsten Fehlerwert abgefragt wobei durch "GROUP BY" doppelte vermieden werden und dann erfolgt direkt die 2. Abfrage in der jeweils einzeln, zu dem aus der ersten Abfrage ermittelten Regisseur, die Gesamtfehler aus allen verschiedenen Einträgen abgefragt werden.
Ist nötig, denn z.B. Steven Spielberg könnte mit mehreren Filmen in der Datenbank stehen.
Das Problem:
Es wird nicht mehr korrekt sortiert, da er ja eigentlich erst nach der Abfrage sortieren sollte, aber genau das krieg ich nicht hin. So sieht es bei mir gerade so aus:
1. Steven Spielberg 40 Punkte (mit einem Film in der db)
2. Kevin Costner 30 Punkte (mit einem Film in der db)
3. Oliver Stone 35 Punkte (mit 2 Filmen in der db, jeweils 10 und 25 punkte)
usw usw
Wer weiss Rat? Ich würde das gerne mit der einen Tabelle umsetzen und nicht eine 2. für die Regisseure anlegen. Man müsste doch eigentlich erstmal alles abfragen (also quasi zuerst beide Abfragen starten), das evtl. in ein Array speichern, dann sortieren lassen und dann erst ausgeben. Aber genau das kriege ich nicht hin. Vielleicht hab ich auch den komplett falschen Lösungsansatz?
Für die Top Ten der Filme hab ich es genauso versucht. Wäre identisch
Danke im Voraus!
vielleicht kann mir jemand weiterhelfen...
Ich programmiere gerade eine Anwendung womit ich Filmfehler verwalten kann. Die Schwierigkeit dabei ist, dass jeder Filmfehler einen Punktwert (je nach schwere des Fehlers) bekommt. Es soll eine Top Ten der Filme mit den meisten Fehlern (also mit dem höchsten Gesamt-Fehlerwert) und eine Top Ten der Regiesseure (auch mit den höchsten Gesamt-Fehlerwert) angezeigt werden.
Tabelle besteht aus den Spalten: ID, FILMTITEL, FEHLER, REGIE, FEHLERWERT
Ich hab das versucht so zu lösen:
PHP-Code:
$strQuery="select REGIE from FILMFEHLER GROUP BY REGIE ORDER BY FEHLERWERT DESC LIMIT 10";
$result = mysql_db_query($DBName, $strQuery);
$xi = 1;
while ($row = mysql_fetch_row ($result)) {
$strQuerygesamt="select sum(FEHLERWERT) as summe FROM FILMFEHLER where REGIE = '".$row[0]."'";
$resultgesamt = mysql_db_query($DBName, $strQuerygesamt);
while ($rowgesamt = mysql_fetch_row ($resultgesamt)) {
$summe = $rowgesamt[0];
}
echo "<tr>";
echo "<td width=\"10%\">".$xi.".</td>";
echo "<td width=\"72%\">".$row[0]."</td>";
echo "<td width=\"18%\">".$summe."</td>";
echo "</tr>";
$xi++;
}
Ist nötig, denn z.B. Steven Spielberg könnte mit mehreren Filmen in der Datenbank stehen.
Das Problem:
Es wird nicht mehr korrekt sortiert, da er ja eigentlich erst nach der Abfrage sortieren sollte, aber genau das krieg ich nicht hin. So sieht es bei mir gerade so aus:
1. Steven Spielberg 40 Punkte (mit einem Film in der db)
2. Kevin Costner 30 Punkte (mit einem Film in der db)
3. Oliver Stone 35 Punkte (mit 2 Filmen in der db, jeweils 10 und 25 punkte)
usw usw
Wer weiss Rat? Ich würde das gerne mit der einen Tabelle umsetzen und nicht eine 2. für die Regisseure anlegen. Man müsste doch eigentlich erstmal alles abfragen (also quasi zuerst beide Abfragen starten), das evtl. in ein Array speichern, dann sortieren lassen und dann erst ausgeben. Aber genau das kriege ich nicht hin. Vielleicht hab ich auch den komplett falschen Lösungsansatz?
Für die Top Ten der Filme hab ich es genauso versucht. Wäre identisch
Danke im Voraus!
Kommentar