【发布时间】:2016-07-21 21:16:21
【问题描述】:
我必须创建一个电影数据库,其中一个查询涉及显示用户“评分”的电影列表以及实际评分和类型。
此外,它必须显示该类型在用户评分的所有电影中所占的百分比。例如:
CREATE TABLE GENRES (
MOVIEID INT NOT NULL,
GENRE VARCHAR(20),
PRIMARY KEY(MOVIEID),
FOREIGN KEY(MOVIEID) REFERENCES MOVIES(ID)
);
查询:
SELECT U.USERID, M.TITLE, U.USERRATING, G.GENRE
FROM USER_RATEDMOVIES U, MOVIES M, GENRES G
WHERE (M.ID = U.MOVIEID) AND (U.USERID LIKE "EXAMPLE") AND (G.MOVIEID = M.ID)
ORDER BY DATE_YEAR, DATE_MONTH, DATE_DAY, DATE_HOUR, DATE_MINUTE, DATE_SECOND;
这将返回我需要的所有内容,除了总数的百分比。那就是我迷路的地方。我是 SQL 新手,并且在 COUNT(*) 和 GROUP BY 中挣扎。
【问题讨论】:
-
您使用的是
SQL Server还是MySQL?你们都标记了。 -
对于初学者,您应该停止使用过时的 ANSI-89 样式连接并使用“较新”的 ANSI-92 样式连接。自该标准实施以来,已经过去了 20 多年。 sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/… 我不清楚你期望的输出是什么。
-
我目前正在使用 MySQL。而且我不知道这些类型的连接,我的代码基于我的讲师的材料。
-
@jpw 很伤心。这些年来,我见过很多人从学校毕业后就拥有在 sql server 中编写游标的能力,但不知道如何以基于集合的方法来编写游标。他们也很少教学生使用参数化查询,很多人离开学校时唯一的查询示例就是教科书注入模型。
-
太好了,游标。难怪这么多网站需要很长时间才能呈现输出。