Php 用于显示多对多数据库结果的MySQL语法

Php 用于显示多对多数据库结果的MySQL语法,php,mysql,sql,syntax,many-to-many,Php,Mysql,Sql,Syntax,Many To Many,我创建了一个多对多数据库,如下所示: 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_Ambi

我创建了一个多对多数据库,如下所示:

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,Sad║
║ film_2 ║  2 ║ Funny,Sad║
╚════════╩════╩══════════╝ 
现在:我插入了一些数据并加入了表以获得:

╔════════╦════╦══════════╗  
║ Title  ║ id ║ Ambience ║  
╠════════╬════╬══════════╣  
║ film_1 ║  1 ║ Funny    ║
║ film_1 ║  1 ║ Sad      ║
║ film_2 ║  2 ║ Funny    ║
║ film_2 ║  2 ║ Sad      ║
╚════════╩════╩══════════╝ 
但是,我的目标是在一行显示胶片_1,在第二行显示胶片_2,如下所示:

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,Sad║
║ film_2 ║  2 ║ Funny,Sad║
╚════════╩════╩══════════╝ 
我正试图使用
GROUP_CONCAT
,但我得到了:

╔════════╦════╦════════════════════════╗
║ Title  ║ id ║        Ambience        ║
╠════════╬════╬════════════════════════╣
║ film_1 ║  1 ║ funny, funny, sad, sad ║
╚════════╩════╩════════════════════════╝
它将所有行合并为一行。
这里有一个

您需要添加
分组依据:

SELECT title,
       GROUP_CONCAT(ambienceName SEPARATOR ' ') AS ambiences
FROM   Films AS f 
   INNER JOIN Films_Ambiences as fa
         ON f.id = fa.film_id           
   INNER JOIN Ambiences AS a
         ON a.id = fa.ambience_id
GROUP  BY title

结果是:

TITLE   AMBIENCES
film1   sad happy
film2   sad happy

这很简单:D.谢谢你的帮助@mishik!