Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit GROUP-Funktion, Hilfe !!!
Hallo Leute !
Ich habe ein riesiges Problem mit mySQL und hoffe hier kann mir jemand helfen :
Also, ich hab zwei Tabellen. Tabelle 1(link_data) enthält Links; Felder sind id,name,url. Tabelle 2(link_comments) enthält bewertungen dafür. Felder: id, link_id, points.
Jetzt möchte ich alle Links anzeigen, sortiert nach der durchschnittsbewertung. Folgenden sql-query habe ich verwendet:
select d.id, d.name, avg(c.points) as avgvotes from link_data d left join link_comments as c on d.id=c.link_id group by d.id order by avg(c.points) desc
Ich erhalte aber immer den Fehler "Falsche Verwendung der GROUP-Funktion" (code 1111)
Kann mir jemand sagen was ich falsch mache ? Bin voll verzweifelt !
MfG Darius
select d.id, d.name, avg(c.points) as avgvotes from link_data d left join link_comments as c on d.id=c.link_id group by d.id order by 3 desc
danke, das geht zwar, aber jetzt werden die Links die noch keine Bewertung haben, als erstes angezeigt. Sie sollen aber als letztes erscheinen....
MfG Darius
select d.id, d.name, avg(c.points) as avgvotes from link_data d left join link_comments as c on d.id=c.link_id group by d.id order by 3 asc
das desc kommt aber aus Deinem Posting
das hab ich leider auch schon probiert. Selbes Ergebnis. Ich weiß, ich nerv, aber das muß doch irgendwie zu machen sein daß die unbewerteten Links unten stehen ?
Laß mal vorerst den join weg, bau ihn erst ein, wenn die Sortierung funktioniert, wenn das möglich ist.
das würde aber auch nichts bringen. denn wenn die avg(points) noch keine Bewertung haben, steht in der Datenbank ja ein leerer Wert, also NULL. Trotzdem werden die bewerteten avg(points), die sagen wir mal eine Bewertung von 3 haben, darunter angezeigt ! Das ist doch crazy ! Seit wann ist 0 mehr als 3 ? Das müßte doch theoretisch genau umgekehrt sein !
Ist wenigstens nach den 0er Records alles sortiert, oder auch nicht? Kann das sein, daß immer zuerst die 0er ausgegeben werden?
Ist das Feld NULL oder NOT NULL?
das Feld ist leer, also NULL ! Oder verstehe ich da jetzt was falsch ?
Es ist ein Unterschied, ob das Feld '0' als numerischen Wert, 'nichts' als String oder 'nichts' als NULL enthält. NULL-Werte erfordern eine Extra-Behandlung, also schau bitte nach, ob das Feld als NULL oder NOT NULL markiert ist bzw. was es enthält.
Nenne im Falle von NOT NULL bitte auch den Datentyp des betreffenden Feldes.
[Editiert von Sky am 05-02-2002 um 15:56]
Das Feld ist leer ! Da steht überhaupt nichts drin. Es hat ja auch noch keine Bewertung, sprich Eintrag bekommen. Alles andere funktioniert ja auch und wird richtig ausgegeben. Nur nicht die leeren Felder. Soviel ich weiß ist das doch NULL oder ?
Bitte beantworte meine Fragen, zumindest die mit dem Datentyp.
sorry aber ich kann dir jetzt nicht ganz folgen. Ich bin mit mySQL noch nicht so versiert
Aber du hast deine Tabelle doch selbst erstellt...?
ahso ja stimmt :D peinlich...
DIe Tabelle ist NOT NULL und hat kein default
Ok, nun noch bitte den Datentyp des Feldes points.
select d.id, d.name, c.points from link_data d left join link_comments c on d.id=c.link_id group by d.id order by 3 asc
|
|