次のような多対多のデータベースを作成しました。
CREATE TABLE Films (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
Title VARCHAR(255));
CREATE TABLE Ambiences (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
ambienceName VARCHAR(255));
CREATE TABLE Films_Ambiences (
film_id INT NOT NULL,
ambience_id INT NOT NULL,
PRIMARY KEY (film_id, ambience_id),
FOREIGN KEY (film_id) REFERENCES Films(id) ON UPDATE CASCADE,
FOREIGN KEY (ambience_id) REFERENCES Ambiences(id) ON UPDATE CASCADE);
今:いくつかのデータを挿入し、テーブルを結合して取得しました:
╔════════╦════╦══════════╗
║ Title ║ id ║ Ambience ║
╠════════╬════╬══════════╣
║ film_1 ║ 1 ║ Funny ║
║ film_1 ║ 1 ║ Sad ║
║ film_2 ║ 2 ║ Funny ║
║ film_2 ║ 2 ║ Sad ║
╚════════╩════╩══════════╝
ただし、私の目的は、次のように、film_1 を 1 行に、film_2 を 2 行目に表示することです。
╔════════╦════╦══════════╗
║ Title ║ id ║ Ambience ║
╠════════╬════╬══════════╣
║ film_1 ║ 1 ║ Funny,Sad║
║ film_2 ║ 2 ║ Funny,Sad║
╚════════╩════╩══════════╝
私は使用しようとしていますGROUP_CONCAT
が、代わりに次のようになります:
╔════════╦════╦════════════════════════╗
║ Title ║ id ║ Ambience ║
╠════════╬════╬════════════════════════╣
║ film_1 ║ 1 ║ funny, funny, sad, sad ║
╚════════╩════╩════════════════════════╝
すべての行を 1 つの行にマージします。これがそのためのSQLFiddleです。