mysql Abfrage
Hallo erstmal.
Mal sehen, ob ich mein Problem in Worte fassen kann.
Ich habe ein Forum wo bei der Threadanzeige halt alle Posts ausgelesen werden.
Nun möchte ich einige Zusatzinfos zum jeweiligen Poster anzeigen lassen und diese idealerweise in den bestehenden Query integrieren.
Das Problem läßt sich so komprimieren:
Ich habe drei Tabellen der folgenden Form
1usertabelle
userid|username
1|ich
2|du
3|er
...
1posts
postid | erstellerid
1|1
2|2
3|1
4|3
5|2
6|1
...
1galerie
eintragid|erstelleid|gruppe|nr
1|1|eins|1
2|2|eins|2
3|2|zwei|1
4|3|zwei|2
5|4|eins|3
6|2|eins|4
....
Die standardabfrage für die Postanzeige sieht dann in etwa so aus:
SELECT posts.postid, users.userid
FROM 1posts AS posts
LEFT JOIN 1usertabelle AS users ON posts.erstellerid = users.userid
WHERE posts.erstellerid = users.userid
ORDER BY posts.postid
Ergebnis:
postid | userid
1|1
2|2
3|1
4|3
5|2
6|1
Nun soll es so aussehen, d.h. alle Galerieeinträge des jeweiligen Posters sollen angeeigt werden:
postid | userid |galerieeinträge
1|1|eins1
2|2|eins2,zwei1,eins4
3|1|eins1
4|3|zwei2
5|2|eins2,zwei1,eins4
6|1|eins1
Wenn ich einen zusätzlichen LEFT JOIN erstelle, klappt das, solange der User nur einen Galerieeintrag hat. Hat er mehrere, wird bei der Ausgabe der Post jeweils wiederholt, was ja doof aussieht ;)
(SELECT posts.postid, users.userid, galerie . *
FROM 1posts AS posts
LEFT JOIN 1usertabelle AS users ON posts.erstellerid = users.userid
LEFT JOIN 1galerie AS galerie ON posts.erstellerid = galerie.erstellerid
WHERE posts.erstellerid = users.userid
ORDER BY posts.postid)
Wenn ich nun so GROUPiere , werden alle wiederholten Antworten eines Users nicht mehr angezeigt (außerdem wird dann nur ein, zufälliger, Galeriebeitrag erfasst):
SELECT posts.postid, users.userid, galerie . *
FROM 1posts AS posts
LEFT JOIN 1usertabelle AS users ON posts.erstellerid = users.userid
LEFT JOIN 1galerie AS galerie ON posts.erstellerid = galerie.erstellerid
WHERE posts.erstellerid = users.userid
GROUP BY galerie.erstellerid
ORDER BY posts.postid
Hat einer eine Idee, wie man das mit einem Query bewerkstelligen kann?
Ich beherrsche einfaches MySQL (bis hin zu JOINS) ganz gut, aber jetzt habe ich keinen blassen Schimmer.
Geändert von temardo (16.02.2006 um 22:30:45 Uhr)
|