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

Bash, Shell, PHP, Python, Perl, CGI
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

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

Post by djbennyf » 2008-04-06 15:38

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?

freddy36
Posts: 273
Joined: 2008-03-20 17:31

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

Post by freddy36 » 2008-04-06 16:00

ohne groub by und mit limit 1?

djbennyf
Posts: 176
Joined: 2003-04-06 19:44

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

Post by djbennyf » 2008-04-06 16:14

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

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

Post by Joe User » 2008-04-06 16:55

Query aufsplitten, eventuell reicht auch schon ein Subselect...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

freddy36
Posts: 273
Joined: 2008-03-20 17:31

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

Post by freddy36 » 2008-04-06 17:14

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.