Hi,
folgender query produziert mir doppelte Einträge bei den Musikrichtungen (letzter inner join holt die Musikrichtungen):
Bei 2 Musikrichtungen für eine band erhalte ich hier 4 Musikrichtungen, zusammengefügt über GROUP_CONCAT, z.b.:
Brit-Rock, Brit-Rock, Classic-Rock, Classic-Rock
Distinct bringt mich leider nicht weiter. Lasse ich die Punkteberechnung raus, klappt es auch. Leider sehe ich grade den Wald vor lauter Bäumen nicht und mich würde wirklich interessieren, wo ich hier etwas falsch mache. Tabellenstrukturen/sonstiges kann ich gerne nachreichen, falls benötigt.
Und: Gibt es für ein derartiges Problem eine elegantere Lösung als den Subquery im Inner Join?
viele grüße und danke
Basti
folgender query produziert mir doppelte Einträge bei den Musikrichtungen (letzter inner join holt die Musikrichtungen):
Code:
SELECT band.nId as id_band, banner.filename, chronic.chronic, band.sName as band, ROUND( SUM( points.points) / u.bandCount ) AS points, GROUP_CONCAT( t_music.sName SEPARATOR ', ' ) AS music FROM t_band_main band INNER JOIN t_band_member bandmembers ON ( bandmembers.nBand = band.nId ) INNER JOIN t_user_main users ON ( users.nId = bandmembers.nUser ) INNER JOIN t_user_points points ON ( -- hole Punkte vom letzten monat IF ( -- januar -- gehe zu dezember und ein jahr zurueck MONTH(NOW()) = 1, MONTH(points.modified) = 12 AND YEAR(points.modified) = YEAR(NOW()-1) AND points.id_user = bandmembers.nUser , -- alle anderen monate MONTH(points.modified) = MONTH(NOW()) -1 AND YEAR(points.modified) = YEAR(NOW()) AND points.id_user = bandmembers.nUser ) ) INNER JOIN t_band_chronic chronic ON ( chronic.id_band =band.nId ) INNER JOIN t_band_images banner ON ( banner.id_band = band.nId AND is_banner = 1 ) INNER JOIN t_music ON ( t_music.nId IN ( SELECT nMusic FROM t_band_music WHERE t_band_music.nBand = band.nId ) ) WHERE band.searchActive = 1 GROUP BY band.nId ORDER BY points DESC LIMIT 10
Brit-Rock, Brit-Rock, Classic-Rock, Classic-Rock
Distinct bringt mich leider nicht weiter. Lasse ich die Punkteberechnung raus, klappt es auch. Leider sehe ich grade den Wald vor lauter Bäumen nicht und mich würde wirklich interessieren, wo ich hier etwas falsch mache. Tabellenstrukturen/sonstiges kann ich gerne nachreichen, falls benötigt.
Und: Gibt es für ein derartiges Problem eine elegantere Lösung als den Subquery im Inner Join?
viele grüße und danke
Basti
Kommentar