yo,
Irgendwie kennt kaum jemand die normale Kreuabfrage mit zwei Tabellen und einem Where.
wie kommst du auf diese these ? ich bin mir sicher, sehr viele kennen das kreuzprodukt sehr gut. und das was du da machst, ist keine kreuzabfrage (auch bekannt als karthesisches produkt), sondern ein ganz normaler INNER JOIN.
des weiteren ist der GROUP BY nur über den usernamen kritisch. sicherlich könnte es sich um ein UNIQUE attribut handeln, muss aber nicht. und da du schon über die id's "joinst", bietet es sich auch an, die id in die gruppierung mit reinzunéhmen, um die abfragre wasserdicht zu machen.
auch den COUNT würde ich nicht über eine spalte bilden, obwohl es in deinem falle keine probleme geben sollte, sondern mit COUNT(*) bilden. dann ist auf einem blick sofort klar, dass alle datens#tze gezählt werden sollen.
Ilja
Ja, ich weiss, dass das keine Kreuzabfrage ist. Deshalb hab ich ja auch den Teil mit dem Where hinzugeschrieben. Unglücklich formuliert. Sorry. Bezog mich also auf das Where, anstelle des Joins und nicht auf die Kreuzabfrage an sich.
Mir ist nur aufgefallen, dass ich fast überall nur Joins sehe, die ich persönlich schwer zu lesen finde, anstatt ein einfaches Where.
Das Count mach ich nur deshalb über lediglich eine Spalte, weil ich der Meinung bin, dass das schneller geht, als ein Count über alle Spalten.
Mit dem Group By hast du natürlich Recht. Da hab ich diese Schwachstelle übersehen. So funktioniert es jetzt aber richtig... Danke für den Hinweis.
select username
from usertabelle,eintragstabelle
where eintrageintragstabelle.userid=userusertabelle.userid
group by usertabelle.username,usertabelle.userid
order by count(Eintrag.id);
MfG Mero