Hi !
Ich habe zwei Tabellen. In einer speichere ich meine Nutzer (login) in der anderen die Bewertung derer Bilder (votingpics). Ein Nutzer kann N Votingpics haben.
Nun möchte ich in einer Top10 ausgeben, welche Bilder am BNesten bewertet werden - aber von jedem Nutzer nur das 'Beste Bild - Wenn Bild 1 von User 1 also mit 80 % bewertet wird und Bild 2 von diesem User mit 78 %, wird nur Bild 1 in den Top10 erscheinen.
die Tabelle votingpics enthält folgende relevante einträge :
id (PK)
user_id (FK)
votes (wie oft wurde das Bild gevotet)
punkte (wie oft davon dafür)
Nun gibt mir folgendes statement die 10 bestbewerteten Bilder aus:
Da habe ich dann allerdings Nutzer doppelt drin, weil ich nicht nach der user_id gruppiere, das Ergebnis ist aber nach den Bestbewerteten Bildern sortiert.
wenn ich nach der user_id gruppiere:
bekomme ich zwar nur ein Bild eines jeden Nutzers angezeigt - dafür aber nicht das Beste Bild des Nutzers, sondern das mit der niedrigsten id, obwohl ich nach bewertung sortiere.
Wenn ich nun aggregiere - z.B. :
bringt das überhaupt nichts - ich nehme an wegen des Dreisatzes ...
Ich steh echt aufm Schlauch ... Könnt ihr weiterhelfgen ?
Ich habe zwei Tabellen. In einer speichere ich meine Nutzer (login) in der anderen die Bewertung derer Bilder (votingpics). Ein Nutzer kann N Votingpics haben.
Nun möchte ich in einer Top10 ausgeben, welche Bilder am BNesten bewertet werden - aber von jedem Nutzer nur das 'Beste Bild - Wenn Bild 1 von User 1 also mit 80 % bewertet wird und Bild 2 von diesem User mit 78 %, wird nur Bild 1 in den Top10 erscheinen.
die Tabelle votingpics enthält folgende relevante einträge :
id (PK)
user_id (FK)
votes (wie oft wurde das Bild gevotet)
punkte (wie oft davon dafür)
Nun gibt mir folgendes statement die 10 bestbewerteten Bilder aus:
Code:
SELECT v.punkte*100/v.votes AS bewertung FROM votingpics v GROUP BY v.id ORDER BY bewertung DESC
wenn ich nach der user_id gruppiere:
Code:
SELECT v.punkte*100/v.votes AS bewertung FROM votingpics v GROUP BY v.user_id ORDER BY bewertung DESC
Wenn ich nun aggregiere - z.B. :
Code:
SELECT MAX(v.punkte*100/v.votes) ...
Ich steh echt aufm Schlauch ... Könnt ihr weiterhelfgen ?
Kommentar