Mysql 如何使用外键链接连接一对多属性
我有下面的模式。我正在尝试将电影的Mysql 如何使用外键链接连接一对多属性,mysql,sql,database,Mysql,Sql,Database,我有下面的模式。我正在尝试将电影的类型和类型结合在一起,以获得电影类型的共同分隔符列表。现在我很确定怎么做 CREATE TABLE movies ( id integer AUTO_INCREMENT primary key, name varchar(100) ); CREATE TABLE genres ( id integer AUTO_INCREMENT primary key, name varchar(100) ); CREATE TABLE genre_of_
类型
和类型
结合在一起,以获得电影类型的共同分隔符列表。现在我很确定怎么做
CREATE TABLE movies (
id integer AUTO_INCREMENT primary key,
name varchar(100)
);
CREATE TABLE genres (
id integer AUTO_INCREMENT primary key,
name varchar(100)
);
CREATE TABLE genre_of_movie (
id integer AUTO_INCREMENT primary key,
movie_id integer,
genre_id integer,
FOREIGN KEY (movie_id) REFERENCES movies(id),
FOREIGN KEY (genre_id) REFERENCES genres(id)
);
INSERT INTO movies (name) VALUES ('Joker');
INSERT INTO genres (name) VALUES ('actions'), ('romance'), ('drama');
INSERT INTO genre_of_movie (movie_id, genre_id) VALUES (1, 1), (1, 3);
我想要的是:
+-------+---------------+
| movie | genre_list |
+-------+---------------+
| Joker | action, drama |
+-------+---------------+
我的尝试
SELECT m.name, g.name
FROM movies m
JOIN genre_of_movie gom ON m.id = gom.movie_id
JOIN genres g ON gom.genre_id = g.id
使用
组\u CONCAT
:
选择m.name,GROUP_CONCAT(g.name分隔符',')作为流派列表
从电影m
m.id=gom.movie\u id上的电影gom的内部连接类型
gom.genre_id=g.id上的内部连接类型g
按m.name分组;
请注意,从技术上讲,两部不同的电影可能恰好同名。在这种情况下,我们可以按电影id
和name
进行聚合,在这种情况下显示不同的电影id
值:
选择m.id、m.name、GROUP_CONCAT(g.name分隔符',')作为流派列表
从电影m
m.id=gom.movie\u id上的电影gom的内部连接类型
gom.genre_id=g.id上的内部连接类型g
按m.id、m.name分组;
这给了我动作,戏剧,
结果是:有两个逗号?我怎么做才能让它产生动作,戏剧
,但是现在逗号后面没有空格了,就像,
它只是,
谢谢。当它允许我的时候,我会把它标记为答案