2016-09-20 19 views
0

我正試圖編寫一個查詢語句,它將返回SAKILA數據庫中所有以法語爲原始語言的影片。預期的結果是0行。加入表格時SQL結果的差異

當我使用language_id找到與法國的語言,我得到預期的結果標題:

SELECT title, release_year FROM sakila.film WHERE language_id =5; 

然而, 我想要得到這樣的結果,而無需使用文字(language_id),而是加盟兩張桌子選擇電影的原始語言。

當我寫:

SELECT title, release_year 
FROM sakila.film, sakila.language 
WHERE language.name = 'french'; 

我得到的所有行。

回答

0

如果你不想使用加入,你需要添加內,其中一個條件。

SELECT title, release_year 
FROM sakila.film, sakila.language 
WHERE language.name = 'french' and film.language_id = language.id 
+0

我覺得這非常接近。我收到一個錯誤。 「'where子句'中的未知列'language.id'。」這可能與「語言」是一個關鍵字這一事實有關嗎? –

+0

您可以嘗試將language.id更改爲language.language_id嗎?它取決於哪個列是表格語言的ID。 – HarryQuake

+0

*如果您不想使用連接*:這仍然是連接,只是它使用傳統和過時的連接語法。 – sstan

0

您沒有在兩個表格之間指定任何連接條件。因此,查詢生成笛卡爾積,絕對不是你想要的。

假如你使用的ANSI風格的加入,語法會碰一碰你在正確的方向:

select f.title, f.release_year 
    from film f 
    join language l 
    on l.language_id = f.language_id -- you are missing this join condition 
    and l.name = 'french'