我想使用三個表格選擇數據。我需要從演員和合約表中獲得股票編號和合約日期,其中電影名稱=電影表中的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