我对sql很新,并试图解决这类问题,并且不知道我是否做得对。
我有两个表(粗体是主键,斜体是外键):
FILM (**FILM_ID**, TITLE, CERTIFICATE, *TYPE_ID*, RENTAL_FEE) and
FILMTYPE (**TYPE_ID**, TYPE_NAME)
我需要检索所有电影的标题和租赁费用,其证书为“12”和 他们的类型是'戏剧'。
我的查询是:
SELECT Film.Title, Film.Rental_fee
FROM Film
INNER JOIN Filmtype
ON Film.Type_Id = Filmtype.Type_Id
WHERE Film.Certificate=12 AND Filmtype.Type_Name='Drama'
正如我从纸质书中所做的那样,没有答案,如果这个查询是正确的,或者我完全错了,我需要一个建议。
答案 0 :(得分:2)
是的,你做得非常正确。一个有助于编写更复杂查询的常用快捷方式是使用表别名而不是完整的表名,如下所示:
SELECT f.Title, f.Rental_fee
FROM Film f
INNER JOIN Filmtype t ON f.Type_Id = t.Type_Id
WHERE f.Certificate=12 AND t.Type_Name='Drama'
这个查询几乎不重要,因为表和条件的数量很少,但是当表的数量增加时,使用短别名会有所帮助。但是,在这种情况下它是可选的,因此您的查询非常好。
答案 1 :(得分:0)
你不需要写连接..
试试这个。
SELECT *
FROM film
WHERE TYPE_ID =
(SELECT TYPE_ID FROM FILMTYPE WHERE TYPE_NAME = 'Drama'
)