PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Top10 Foto aus der Datenbank abfragen, Probleme



MafiaGmbH
18.03.2007, 12:46
Hallo, ich lasse bei mir auf der Seite Fotos bewerten. Und jeder User darf bis zu 9 Fotos zur bewertung hochladen.

So wen ich in der Top10 Liste die Fotos nach der bewertung listen lasse, kommen auch von einem Profil mehr Fotos vor.
Ich will aber so machen, das es von einem Profil nur das beste Foto angezeigt wird.

Also eine Beispiel Datenbank.


ID UserID BILDNR BEWERTUNG
1 1 1 100
2 1 2 90
3 2 1 70
4 2 2 71


Also ich will das es nach meiner Beispiel Datenbank volgende Datensätze in der Reihnefolge anzeigt.

ID = 1 (PLATZ1)
ID = 4 (PLATZ2)

Also es wird erstmal geschaut das das UserID = 1 Profil das beste Foto besitzt, und zwar hat 100 Punkte bekommen. Und dann wird das zweite profil geschautn und nach den besten Bild Punkten gesucht. Dann müssen die ausgewelte Profile noch nach den Punkten sortiert werden.
Wie sieht die MySQL Abfrage dafür den aus?

devilz
18.03.2007, 15:04
Was für eine Fotogallery setzt du ein? Woher sollen wir die SQL Struktur der Fotosoftware kennen?

MafiaGmbH
18.03.2007, 15:49
Was für eine Fotogallery setzt du ein? Woher sollen wir die SQL Struktur der Fotosoftware kennen?

Nein also ich habe den Script selbst programmiert. und brauche die erforderliche MySQL Abfrage. Den Dattenbank beispiel habe ich ja oben angegeben.

ICh könnte z.B. diese Abfrage nutzen:
SELECT * FROM TABLLE WHERE 1 ORDER BY BEWERTUNG DESC

Aber, da werden alle Bilder angezeigt, und ich will das es von einem Profil nur das Beste bild angezeigt wird. wen ich "GROUP BY UserID" mit verwende, wird zwar nur ein Bild des Users angezeigt, aber nicht das mit meißten bewertungen.

supersucker
18.03.2007, 16:36
select
user_id uid, bild_nr
from
my_table
where bewertung=(select max(bewertung) where user_id=uid)
group by user_id

Kann das nicht testen, könnte aber hinhauen....

Kuli
23.03.2007, 18:09
Nun ja, so ähnlich.


SELECT * FROM bilder x
WHERE x.bewertung=(SELECT MAX(y.BEWERTUNG) FROM bilder y WHERE x.userid=y.userid)
ORDER BY bewertung DESC LIMIT 10;

Das "LIMIT 10" gilt für MySQL; für andere Engines mußt Du was passendes anderes wählen.

-Kuli