Veröffentlicht 1. Dezember 200420 j Hallo zusammen, nun gehts in die zweite Runde Ich habe eine Produkttabelle, zu nicht allen Produkten befinden sich Bewertungen in einer zweiten Tabelle, es können natürlich auch mehrere pro Produkt sein. Mein Select soll für jedes Produkt alle Bewertungen lesen und den Durchschnitt errechnen, und Produkte mit dem besten Durchschnitt sollen natürlich zuerst zurückgegeben werden. Optimal wäre wenn ich den Durchschnitt zurückbekommen würde, eine bloße Sortierung nach Durchschnitt reicht aber auch. Der Wert der Bewertung ist als INT gespeichert, auf einer Skala von 1 - 10 Mit Mathe in SQL Abfragen hatte ich bisher noch nichts zu tun, ich hoffe ihr könnt mir da irgendwie weiterhelfen? :mod:
1. Dezember 200420 j Select Produktname , avg(bewertung) from Tabelle1, Tabelle2 where Tabelle1.id = tabelle2.id Group by tabelle1.id ungetestet
3. Dezember 200420 j ungetestet Verstösst auch gegen die Aggregat-Funktion Ich würde es eher so machen (Syntax aus dem MSSQL-Server) SELECT prod.produktid , AVG(bew.bewertung) FROM produkttabelle AS prod LEFT OUTER JOIN bewertungstabelle AS bew ON prod.produktid = bew.produktid GROUP BY prod.productid
3. Dezember 200420 j Ich vergaß: SELECT prod.produktid , AVG(bew.bewertung) FROM produkttabelle AS prod LEFT OUTER JOIN bewertungstabelle AS bew ON prod.produktid = bew.produktid GROUP BY prod.productid [COLOR=Red]ORDER BY AVG(bew.bewertung) DESC[/COLOR]
7. Dezember 200420 j @honkytonk: das funktioniert so leider nicht. Invalid user of group function sagt er. Hab mich ein bisschen umgeschaut, aber bin nicht wirklich schlau geworden. Hat jemand vielleicht anhand von irgendwelchen Links oder guten Buchtipps was zum lesen für mich?
8. Dezember 200420 j Vielleicht hilft es hier einigen, wenn du sagst, welches Sql du benutzt, bzw welche DAtenbank, gibt ja genug davon. Bsp.: MySql oder MSSQL?
8. Dezember 200420 j achja mysql version 4.xx also ich nehme an was recht stabiles aber auch aktuell bin leider so auch noch nicht weitergekommen
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.