PHP、Mysql行数据分离(,)和打印<;李>;
我有一个电影数据库。例如:PHP、Mysql行数据分离(,)和打印<;李>;,php,mysql,Php,Mysql,我有一个电影数据库。例如: table: movies Id - Title - Actors 2 - Avangers - 2,5,11,16 table: actors Id - Name 2 - Jason 5 - Emma 11 - Stuart 16 - Thomas 我的问题是:我怎样才能用.li.打印这个呢 Avengers: *Jason *Emma *Stuart *Thomas 如果必须将演员作为逗号分隔的Id列
table: movies
Id - Title - Actors
2 - Avangers - 2,5,11,16
table: actors
Id - Name
2 - Jason
5 - Emma
11 - Stuart
16 - Thomas
我的问题是:我怎样才能用.li.打印这个呢
Avengers:
*Jason
*Emma
*Stuart
*Thomas
如果必须将演员作为逗号分隔的Id列表保存在电影表中,那么我能想到的最好方法是:在一个查询中获取该列,提取不同的Id,对每个Id运行一个查询以查找名称 正如一位评论员所说,这不是最好的DB设计。我建议从movie表中删除actor列,并使用第三个表作为movie-actor关系:
table:movieactor
movie actor
------------
2 2
2 5
2 11
2 16
然后,您可以运行一个内部联接来查找在给定电影中出现的演员的姓名
SELECT actors.Name from movieactor INNER JOIN actors ON movieactor.actor = actors.Id WHERE movieactor.movie = 2
如果必须将演员作为逗号分隔的Id列表保存在电影表中,那么我能想到的最好方法是:在一个查询中获取该列,提取不同的Id,对每个Id运行一个查询以查找名称 正如一位评论员所说,这不是最好的DB设计。我建议从movie表中删除actor列,并使用第三个表作为movie-actor关系:
table:movieactor
movie actor
------------
2 2
2 5
2 11
2 16
然后,您可以运行一个内部联接来查找在给定电影中出现的演员的姓名
SELECT actors.Name from movieactor INNER JOIN actors ON movieactor.actor = actors.Id WHERE movieactor.movie = 2
谢谢你的编辑,我一直在琢磨这是一个糟糕的数据库设计。您应该跳过
电影
上的演员
列,并创建一个新表(例如电影演员
)来保存n-n关联(它将有两列,电影id
和演员id
)。然后你想要的就变得非常简单了(一个简单的SQL连接)。谢谢你的编辑,我已经开始琢磨这是一个糟糕的数据库设计。您应该跳过电影
上的演员
列,并创建一个新表(例如电影演员
)来保存n-n关联(它将有两列,电影id
和演员id
)。然后您想要的就变得非常简单了(一个简单的SQL连接)。谢谢。你帮了我,不客气。如果你满意,请考虑进行投票和/或接受这个答案。谢谢。你帮了我,不客气。如果你满意,请考虑进行投票和/或接受这个答案。