SQL连接、选择和位置

SQL连接、选择和位置,sql,select,join,Sql,Select,Join,我对sql非常陌生,正在尝试解决这类问题,不知道我是否做对了 我有两个表(粗体是主键,斜体是外键): 我需要检索所有电影的片名和租赁费,其证书为“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='Dram

我对sql非常陌生,正在尝试解决这类问题,不知道我是否做对了

我有两个表(粗体是主键,斜体是外键):

我需要检索所有电影的片名和租赁费,其证书为“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'

当我在纸质书上这样做时,没有答案,我需要一个建议,如果这个问题是正确的,或者我做得完全错误。

是的,你做得绝对正确。帮助编写更复杂查询的一个常见快捷方式是使用表别名而不是完整的表名,如下所示:

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'

在这个查询中,它几乎不重要,因为表和条件的数量很少,但是当表的数量增加时,使用短别名会有所帮助。但是,在这种情况下,它是可选的,因此您的查询非常好。

您不需要编写join

试试这个

SELECT *
FROM film
WHERE TYPE_ID =
  (SELECT TYPE_ID FROM FILMTYPE WHERE TYPE_NAME = 'Drama'
  )

为什么不使用一些工具来测试它,比如SQLFIDLE?
SELECT *
FROM film
WHERE TYPE_ID =
  (SELECT TYPE_ID FROM FILMTYPE WHERE TYPE_NAME = 'Drama'
  )