Page 1 of 1

MySQL: Möglichkeit GROUP BY nach Order (Joins)

Posted: 2008-04-06 15:38
by djbennyf
Hallo,

ich habe eine SQL Abfrage:

Code: Select all

SELECT DISTINCT 
a.id, b.name,e.bild
FROM freunde AS a 
LEFT JOIN userdaten AS b ON a.freundesid=b.mitgliedsid 
LEFT OUTER JOIN profilbilder AS e ON e.bildmitgliedsid=a.freundesid AND e.bildok=1 
WHERE a.ich=1 
GROUP BY a.freundesid 
ORDER BY b.name
In wirklichkeit sind noch ein paar weitere Left Joins. Nun zu eigentlichen Problem.
Alle LEFT JOINS haben immer nur 1 Datensatz. Die Outer Join (profilbilder) hat pro User mehrere Einträge oder auch keinen.

Wenn nun mehr Bilder hinterlegt sind bekomme ich immer das 1. Bild bzw den 1. Datensatz.
Gerne würde ich deshalb zuerst den ORDER BY RAND() machen und danach den GROUP BY

Welche Möglickeit habe ich das Query zu verändern, dass ich immer einen utnerschiedlichen Datensatz aus derm profilbilder bekomme?

Re: MySQL: Möglichkeit GROUP BY nach Order (Joins)

Posted: 2008-04-06 16:00
by freddy36
ohne groub by und mit limit 1?

Re: MySQL: Möglichkeit GROUP BY nach Order (Joins)

Posted: 2008-04-06 16:14
by djbennyf
Hilft leider nicht weiter, da ich ja alle "Freunde" mit je einem zufälligen Bild haben möchte und nicht nur einen "Freund" mit einem zuflligem Bild

Aber Danke

Re: MySQL: Möglichkeit GROUP BY nach Order (Joins)

Posted: 2008-04-06 16:55
by Joe User
Query aufsplitten, eventuell reicht auch schon ein Subselect...

Re: MySQL: Möglichkeit GROUP BY nach Order (Joins)

Posted: 2008-04-06 17:14
by freddy36
Wenn da jemand viele Freunde hat wird das ein Ziemlich übles query, ORDER BY RAND() braucht dann für jeden Freund ne eigene temporary table nur um sich dann da eine Zeile rauszupicken...
ich würde mir dreimal überlegen ob es wirklich zufällig sein muss.
Wenn es das sein muss nimm lieber ein extra Feld dafür und las das regelmäßig per stored procedure/trigger updaten.