【发布时间】:2021-07-23 08:44:03
【问题描述】:
我几周前开始使用数据库,所以我在这方面还很陌生!我们有一些家庭作业要在几天内完成,与编写一些查询有关也许指出错误,以便我纠正它们!所以提前谢谢
练习是这样的:
给定以下关系模式:
用户(SSN、NameU、SurnameU、城市、YearOfBirth、UserType)
电影(CodM、标题、国家、语言、MovieStudio、类型)
评估(SSN、CodM、评估、日期)
用 SQL 语言编写以下查询:
一个。对于每种用户类型,显示对由以下人员制作的电影的平均评价 “漫威”(MovieStudio = “漫威”)。
SELECT U.USERTYPE , AVG(EVALUATION)
FROM EVAUATION E,USER U,MOVIE M
WHERE E.SSN=U.SSN AND E.CODM=M.CODM AND MOVIESTUDIO='MARVEL'
GROUP BY USERYPE
b.对于属于“专家”类型的每个用户,他们从未评价过 类型“恐怖”,但至少评估了 3 部类型为“喜剧”的电影,节目名称, 姓氏和对“意大利语”电影的最高评价。
SELECT USERTYPE,NAME,SURNAME,MAX(EVALUATION)
FROM USER U,MOVIE M,EVALUATION E
WHERE USERTYPE='EXPERT' AND U.SSN=E.SSN AND M.CODM=E.CODM
AND E.SSN NOT IN(SELECT E1.SSN
FROM EVALUATION E1, MOVIE M1
WHERE E1.CODM=M1.CODM AND GENRE='HORROR')
AND E.SSN IN (SELECT E2.SSN
FROM EVALUATION E2, MOVIE M2
WHERE E2.CODM=M2.CODM AND GENRE='COMEDY'
GROUP BY EVALUATION
HAVING COUNT >=3)
AND LANGUAGE='ITALIAN'
GROUP BY USERTYPE
这是我目前能做的最好的!正如我所说,我在这方面还很新,所以我会得到一些帮助!
【问题讨论】:
-
请改掉使用旧逗号连接的习惯,使用 ANSI 连接。例如:
FROM EVAUATION E INNER JOIN USER U ON (E.SSN=U.SSN) INNER JOIN MOVIE M ON (E.CODM=M.CODM) WHERE ...