Próbuję uzyskać w łańcuchu dwa skojarzenia wiele do wielu. W tym przykładzie każda drużyna ma nieokreśloną liczbę kolorów, a nieokreślona liczba zdobyła nagrody.Powielanie wartości w GROUP_CONCAT przy użyciu dwóch wielu do wielu
Jest to schemat:
I to jest kwerenda Używam:
SELECT
teams.name AS name,
GROUP_CONCAT(colours.name) AS colours,
GROUP_CONCAT(awards.name) AS awards
FROM
teams
-- join colours
INNER JOIN teams_to_colours
ON teams.id = teams_to_colours.team_id
INNER JOIN colours
ON teams_to_colours.colour_id = colours.id
-- join awards
INNER JOIN teams_to_awards
ON teams.id = teams_to_awards.team_id
INNER JOIN awards
ON teams_to_awards.award_id = awards.id
WHERE
teams.name="A-Team"
GROUP BY
teams.id
Problemem jest to, że kolory i nagrody uzyskać duplikowane. Powiedzmy A-Team ma czerwony i niebieski jako barwach, jak i nagród TrollAward i DarwinAward ... wyniki dostaję od wyglądu SQL jak poniżej:
name: "A-Team"
colours: "red,blue,red,blue"
awards: "TrollAward,DarwinAward,TrollAward,DarwinAward"
próbowałem dołączyć tylko jedną wiele-to- wielu, i działa idealnie, więc myślę, że mam coś z nadzorowanie wielokrotna dołącza ...
Zobacz moją odpowiedź tutaj: [MySQL Group_Concat Powtarzające wartości] (http://stackoverflow.com/questions/11486396/mysql-group-concat-repeating-values/11486365#11486365) –