Hi,
habe ein kleines Problem, betreffend folgende Seite: Witze.
Ich habe 2 DBs: witze_kategorien und witze.
Auf der Seite sollen alle Witze-Kategorien und dessen Anzahl an Witzen aufgelistet werden.
Momentan mach ich das so:
[PHP]
// Daten der Kategorien abfragen
$result = mysql_query(„SELECT id, url, name FROM witze_kategorien ORDER BY name“);
while($kategorie = mysql_fetch_assoc($result)) {
//blubbla-Text
// Witze-Anzahl der Kategorie abfragen
$anzahl_result = mysql_query("SELECT COUNT(*) FROM witze WHERE kategorie = ".$kategorie[‚id‘]);
//blubbla-Text
}
[/PHP]
(Kann sein, dass sich gerade ein paar Fehlerchen eingeschlichen haben, aber es geht nur ums Prinzip.)
Das geht doch sicher effizienter mit nur einer SQL-Abfrage, oder?
Du hast nicht zwei Datenbanken sondern 2 Datenbanktabellen. Wichtiger Unterschied!
Vorschlag:
SELECT wk.id, wk.url, wk.name, COUNT(w.*) AS anzahl_witze
FROM witze_kategorien AS wk, witze AS w
WHERE w.kategorie = wk.id
GROUP BY wk.id
ORDER BY name
Danke für den Code!
Sorry, ich verwende meistens nur eine Datenbank und wenn es dann um verschiedene Tabellen geht, verwechsle ich das ab und zu.
Das AS ist zwar nicht notwendig beim FROM, aber es geht ja beides.
Unten fehlt dann noch das wk bei ORDER BY name. Aber das hab ich dann schon selbst gemerkt.
Einziges Problem ist das COUNT(w.).
Mit COUNT(w.id) funktioniert es perfekt. Aber bei COUNT(w.) wird ein Fehler ausgegeben. Wieso funktioniert das nicht?
Ach ja noch 'ne kleine Frage:
Wenn ich dann noch die Gesamtheit aller Witze haben will, wie füge ich das am effizientesten ein?