Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用外键链接连接一对多属性_Mysql_Sql_Database - Fatal编程技术网

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分组;

这给了我
动作,戏剧,
结果是:有两个逗号?我怎么做才能让它产生
动作,戏剧
,但是现在逗号后面没有空格了,就像
它只是
谢谢。当它允许我的时候,我会把它标记为答案