我打算创建一个类似于IMDB.com的网站。为了减少执行时间,我使用以下结构。是否可以加快工作速度?
Table - 1 Id Movie_name description 1 name one some description 2 name two some description 3 name three some description Table 2 id actorname 1 name 1 2 name 2 3 name 3 4 name 4 Table 3 id movieid actorid 1 1 1 2 1 2 3 1 3 4 1 9 5 2 6 6 2 5 7 2 8 8 2 1
当我想列出电影节目中的演员时,将从表3中检索演员ID并从表2中找到相应的名称(使用单个查询)。当我想列出演员的电影时,它将从表3中检索电影ID并从第一个表中查找相应的名称。它会正常工作吗?还有其他想法吗?
答案 0 :(得分:2)
这将为指定电影中的所有演员提供
SELECT c.ID, c.actorName
FROM table1 a
INNER JOIN table3 b
ON a.ID = b.movieID
INNER JOIN table2 c
ON b.actorid = c.ID
WHERE a.ID = 1
这个将为指定演员提供所有电影
SELECT a.*
FROM table1 a
INNER JOIN table3 b
ON a.ID = b.movieID
INNER JOIN table2 c
ON b.actorid = c.ID
WHERE c.ID = 1
要进一步了解联接,请访问以下链接:
更新1
这称为Relational Division
SELECT a.ID, a.Movie_Name
FROM table1 a
INNER JOIN table3 b
ON a.ID = b.movieID
INNER JOIN table2 c
ON b.actorid = c.ID
WHERE c.ID IN (1, 2, 3)
GROUP BY a.ID, a.Movie_Name
HAVING COUNT(DISTINCT c.ID) = 3
答案 1 :(得分:0)
我建议您通过删除id字段来修改table3。将movieid和actorid一起用作主键。您可能希望在此表中添加其他字段,例如Jermaine Xu在评论中建议的字符名称和出现顺序。