我想使用三个表格选择数据。我需要从演员和合约表中获得股票编号和合约日期,其中电影名称=电影表中的x。使用三个表格选择数据只加入两个表格
我做:
SELECT equity_number, contract_date
FROM actor,
contract,
film
WHERE actor.equity_number = contract.equity_number
and title = 'x'
虽然我得到含糊不清的错误列。
我想使用三个表格选择数据。我需要从演员和合约表中获得股票编号和合约日期,其中电影名称=电影表中的x。使用三个表格选择数据只加入两个表格
我做:
SELECT equity_number, contract_date
FROM actor,
contract,
film
WHERE actor.equity_number = contract.equity_number
and title = 'x'
虽然我得到含糊不清的错误列。
您与电影表没有任何关系。 并利用编写SQL的一个现代的方式:)
SELECT a.equity_number, c.contract_date
FROM actor a
INNER JOIN contract c on a.equity_number = c.equity_number
INNER JOIN film f on f.SOMERELATIONSHIPID = c.SOMERELATIONSHIPID
WHERE f.title = 'x'
我建议你使用JOINS
,而不是老用逗号分隔的语法。在它为每个表设置别名后,在选择列表中使用这些别名。类似于:
SELECT a.equity_number,
c.contract_date
FROM actor a
LEFT JOIN contract c ON a.equity_number = c.equity_number
LEFT JOIN film f ON a.film_id = f.id -- there should be related columns
AND f.title = 'x'
无处不限列,比如'contract.equity_number'而不是'equity_number'。 – jarlh
切换到现代,明确的'JOIN'语法而不是那些旧的,隐含的逗号分隔连接。 – jarlh
@jarlh谢谢你,为什么他们必须被指定,而如果我只使用两个表,我会离开,而不指定表之前的属性 – norskdreamer