2つの多対多の関連付けを取得しようとしています。この例では、各チームの色数は不定で、未定数が賞を獲得しています。2つの多対多を使用する場合のGROUP_CONCATの値の重複
これはスキーマです:
そして、これは私が使用しているクエリです:
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
を問題は、色や賞をを重複してしまうことがあります。私はこのようなSQLを見てから取得結果...のは、チームカラーのように、と賞TrollAwardとDarwinAwardとして赤と青があるとしましょう:
name: "A-Team"
colours: "red,blue,red,blue"
awards: "TrollAward,DarwinAward,TrollAward,DarwinAward"
私は唯一の多対に参加しようとしています多くの、そして完璧に動作しますので、私は、私は複数で何かを監督してい推測することは、迅速かつ汚い答えがGROUP_CONCAT()
機能でDISTINCT
を追加することです...
私の答えはこちらをご覧ください:[MySQL Group_Concatの値を繰り返す](http://stackoverflow.com/questions/11486266/mysql-group-concat-repeating-values/11486365#11486365) –