电影数据库查询:上映时间范围内的电影信息及演员
电影数据库查询:上映时间范围内的电影信息及演员
本数据库包含以下关系表:
- 演员表 (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 著作权归作者所有。请勿转载和采集!