Hallo liebe PHP Gemeinde!
Ich habe ein kleines MySQL Problem, dessen Lösung mich schon einige Tage nicht loslässt. Leider bin ich mit meinem Latein so ziemlich am Ende.
Mein Vorhaben:
Ich habe 3 Tabellen, die ich per Join abfrage.
- Inhalt von Tabelle 1: Benutzerdaten
- Inhalt von Tabelle 2: Kommentare der Benutzer
- Inhalt von Tabelle 3: Eine Rangtabelle
Nun habe ich vor aus Tabelle 1 und 2 eine Abfrage mit einem count() der Beiträge der jeweiligen Benutzer zu machen und Tabelle 3 entsprechend nach dem vom Benutzer erreichten Rang abzufragen. Geht das eigentlich in einer Abfrage?
Tabelle 1 und 2 ist ja kein Problem:
Code:
select
u.name
,count(k.kommentar) as kommentare
from tbl1 as u
inner join tbl2 as k
on u.id = k.user_id
group by u.id
Tabelle 3 hat folgende Spalten:
`von` <-- Mindestanzahl an Kommentaren eines Ranges
`bis` <-- Höchstanzahl an Kommentaren eines Ranges
`rang`<-- Name des Ranges
Ich habe einiges versucht (leider bekomme ich mein Statementdurcheinander nicht mehr rekonstruiert). Meine letzte Idee, die mir am geeignetsten schien war folgende:
Code:
select
u.name
,count(k.kommentar) as kommentare
from tbl1 as u
inner join tbl2 as k
on u.id = k.user_id
inner join tbl3 as r
on count(k.kommentar) >= r.von and count(k.kommentar) <= r.bis
group by u.id
Ich versuche also das Ergebnis aus dem count() auf einen Bereich der Spalten `von` und `bis` zu beziehen. Leider schlägt explizit dieses Beispiel mit der Meldung
Invalid use of group function fehl.
Beim Ersetzen von count(k.kommentar) durch den Alias kommentare im Join auf tbl3 bekomme ich
Unknown column 'kommentare' in 'on clause'.
Kann mir jemand von euch vielleicht ein bisschen auf die Sprünge helfen?