电影数据库查询:上映时间范围内的电影信息及演员

本数据库包含以下关系表:

  • 演员表 (A):包含演员编号 (no)、演员姓名 (name)、演员地址 (address)、演员性别 (gender) 和演员出生日期 (birthday)。
  • 电影公司表 (C):包含电影公司编号 (cno)、公司名称 (cname)、公司地址 (address) 和公司电话 (tel)。
  • 电影表 (M):包含电影编号 (mno)、电影名称 (name)、电影长度 (len)、电影制作年份 (year) 和电影公司编号 (cno)。
  • 上映信息表 (I):包含上映信息编号 (ino)、电影编号 (mno)、上映时间 (idate) 和电影票价 (price)。
  • 电影演员关系表 (R):包含关系编号 (rno)、电影编号 (mno)、演员编号 (ano)、演员在电影中饰演的角色名称 (rrole) 和演员在电影中出现时间 (rtime)。

以下 SQL 语句用于查询所有上映时间在 '2010-06-01' 和 '2020-07-01' 之间的电影信息,并显示电影名称、演员姓名(电影中出现时间大于 40 分钟)、电影长度、电影公司、上映时间和票价。若电影演员有多个,则用逗号隔开。

SELECT DISTINCT M.name || '/' || 
       (SELECT GROUP_CONCAT(A.name) 
        FROM R 
        JOIN A ON R.ano=A.no 
        WHERE R.mno=M.mno AND R.rtime>40) || '/' || 
       M.len || '/' || C.cname || '/' || 
       I.idate || '/' || I.price 
FROM M 
JOIN C ON M.cno=C.cno 
JOIN I ON M.mno=I.mno 
WHERE I.idate BETWEEN '2010-06-01' AND '2020-07-01' 
ORDER BY I.idate ASC;

说明:

  • 使用 GROUP_CONCAT 函数将同一电影中所有满足条件的演员姓名连接在一起。
  • rtime>40 条件筛选出电影中出现时间超过 40 分钟的演员。
  • 使用 ORDER BY I.idate ASC 将结果按上映时间升序排列。

示例输出格式:

'电影名/电影演员1, 电影演员2/电影长度/电影公司/电影上映时间/电影票价'

电影数据库查询:上映时间范围内的电影信息及演员

原文地址: https://www.cveoy.top/t/topic/os63 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录