#1 31. März 2010 Hallo @ all habe ein kleines Denkproblem und kriege das irgendwie alleine nicht hin. Wollte kurz ein kleines Bewertungssystem schreiben. Habe in der DB eine Tabelle mit objekte (Was will ich bewerten wird dort hinterlegt.) und eine Tabelle mit bewertungen (wird jeweils eingetragen die schriftliche Bewertung mit Sternen von den jeweiligen Objekten.) Es gibt ein Sterne-Sytsem sprich 5 Sterne ist die beste Bewertung. Die Anzahl der Sterne wird aber immer erst errechnet neu und ist nicht hinterlegt fix. Meine Frage: Wie kann ich die DB am besten abfragen um die z.B. 5 best bewerteten Objekte auszugeben da es ja in der DB keine fixe Sterne anzahl gibt sondern immer nur von den Usern die einzelne.? + Multi-Zitat Zitieren
#2 31. März 2010 AW: Bewertungs-Abfrage Code: SELECT *, count(*) as `count` FROM `bewertungen` GROUP BY `id` ORDER BY `count` DESC Damit bekommst du alle Bewertungen jewals als eine id zusammengezählt als "count" + Multi-Zitat Zitieren
#3 31. März 2010 AW: Bewertungs-Abfrage Danke für deine Hilfe aber ich muss ja die anzahl der vergebenen Sterne teilen durch die anzahl der user die sie gegeben haben ? z.B. 10 User haben insgesamt 24 Sterne vergeben -> 24 / 10 = 2,4 = 2Sterne + Multi-Zitat Zitieren
#4 31. März 2010 AW: Bewertungs-Abfrage Code: SELECT *, count(*) as `count`, sum(`sterne`) as `sterne` FROM `bewertungen` GROUP BY `id` ORDER BY `count` DESC Bitte! + Multi-Zitat Zitieren
#5 31. März 2010 AW: Bewertungs-Abfrage hhmm irgendwie klappt dies nicht stimmt das so = SELECT *, count(*) as `sterne`, sum(`id`) as `id` FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `sterne` DESC Die DB sieht so aus bewertungen: id sterne bewertungs_id + Multi-Zitat Zitieren
#6 31. März 2010 AW: Bewertungs-Abfrage Code: SELECT *, count(*) as `count`, sum(`sterne`) as `count_sterne` FROM `bewertungs_id` GROUP BY `bewertungs_id` ORDER BY `count` DESC Ich geh mal davon aus das "bewertungs_id" bestimmt zu welchem Objekt die Bewertung gehört! Ausgabe: id sterne sterne_count count bewertungs_id + Multi-Zitat Zitieren
#7 31. März 2010 AW: Bewertungs-Abfrage ah ok... Kann ich nicht schon in der Abfrage anzahl sterne und anzahl bewertungen teilen ? + Multi-Zitat Zitieren
#8 31. März 2010 AW: Bewertungs-Abfrage hab ich schonmal gemacht. meine abfrage ist wie die von nanobyte Code: mysql_query('SELECT uid, SUM(vote) as svote, (COUNT(vote)-1) as cvote, (SUM(vote)/(COUNT(vote)-1)) as rate FROM '.$dbtable.'vote WHERE activ=1 GROUP BY uid ORDER BY rate DESC'); die tabelle sieht so aus Code: id uid userid vote datum guest activ + Multi-Zitat Zitieren
#9 4. April 2010 AW: Bewertungs-Abfrage mit dem dividieren klappt irgendwie nicht. Meine Abfrage SELECT *, count(*) as `bws`, sum(`sterne`) as `multi_sterne`, (SUM(`sterne`)/(COUNT(`bws`))) as ausgabe FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `sterne` DESC Was ist den daran falsch ? es muss aufjedenfall hier dran liegen (SUM(`sterne`)/(COUNT(`bws`))) as ausgabe aber wüsste nicht wie ich es sonst schreiben soll mfg + Multi-Zitat Zitieren
#10 4. April 2010 AW: Bewertungs-Abfrage wieso denn nochmal SUM und COUNT - die hast du doch schon mit `bws` und `multi_serne`? fehlermeldung? + Multi-Zitat Zitieren
#11 5. April 2010 AW: Bewertungs-Abfrage um zu dividieren ??? Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\test2.php on line 8 + Multi-Zitat Zitieren
#12 5. April 2010 AW: Bewertungs-Abfrage Code: SELECT COUNT(*) `bws`, SUM(`sterne`) `multi_sterne`, ( `multi_sterne` / `bws` ) `ausgabe` FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `sterne` DESC + Multi-Zitat Zitieren
#13 5. April 2010 AW: Bewertungs-Abfrage Müsste es nicht Heißen: Code: SELECT COUNT(*) AS `bws`, SUM(`sterne`) AS `multi_sterne`, ( `multi_sterne` / `bws` ) AS `ausgabe` FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `ausgabe` DESC + Multi-Zitat Zitieren
#14 5. April 2010 AW: Bewertungs-Abfrage nein, ein "as" ist in diesem fall nicht notwendig. MySQL :: MySQL 5.1 Referenzhandbuch :: 13.2.7 SELECT + Multi-Zitat Zitieren
#15 6. April 2010 AW: Bewertungs-Abfrage also bei dieser abfrage SELECT COUNT(*) `bws`, SUM(`sterne`) `multi_sterne`, ( `multi_sterne` / `bws` ) as `ausgabe` FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `sterne` DESC Gibt es immer noch folgende Fehlermeldung Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\test2.php on line 16 Danke das Ihr mir so helft + Multi-Zitat Zitieren
#16 6. April 2010 AW: Bewertungs-Abfrage diese fehlermeldung bedeutet, dass der query fehlschlug. schreib nach der ausführung mal "print mysql_error();" in den quelltext. + Multi-Zitat Zitieren
#17 6. April 2010 AW: Bewertungs-Abfrage COUNT(*) was soll er den counten? id, sterne, name ... bws nimmst du zur berechnung. probier mal COUNT(`sterne`) oder was auch immer + Multi-Zitat Zitieren
#18 6. April 2010 AW: Bewertungs-Abfrage Dann erhalte ich Unknown column 'multi_sterne' in 'field list' + Multi-Zitat Zitieren
#19 6. April 2010 AW: Bewertungs-Abfrage rechne "multi_sterne" und "bws" einfach mit php PHP: // der query ... while( $row = mysql_fetch_object ( $query )) { $ausgabe = $row -> multi_sterne / $row -> bws ; //etc ... } + Multi-Zitat Zitieren
#20 6. April 2010 AW: Bewertungs-Abfrage würde ich ja aber ich will ja die zb 10 besten bewertetet XY ausgeben.... + Multi-Zitat Zitieren
#21 6. April 2010 AW: Bewertungs-Abfrage dann hau ein limit rein und lass die anderen aliase weg... Code: SELECT COUNT(*) / SUM(`sterne`) `ausgabe` FROM `bewertungen` GROUP BY `bewertungs_id` ORDER BY `ausgabe` DESC LIMIT 10 + Multi-Zitat Zitieren
#22 6. April 2010 AW: Bewertungs-Abfrage ich möchte ja von allen die besten 10 ausgeben.... Danke euch allen aber trotzdem werde dann mal weiter google und lesen... + Multi-Zitat Zitieren
#23 6. April 2010 AW: Bewertungs-Abfrage dann wieder mit php, wo ist denn das problem? + Multi-Zitat Zitieren
#24 17. April 2010 AW: Bewertungs-Abfrage ich muss ja dann alle einträge durchlaufen oder ?= ? + Multi-Zitat Zitieren