2016-09-20 13 views
0

フランス語を元の言語とするSAKILAデータベースのすべてのムービーを返すクエリを作成しようとしています。期待される結果は0行です。テーブル結合時のSQL結果の不一致

私は言語としてフランス語でタイトルを検索しlanguage_idを使用する場合は、私が期待した結果を得る:しかし、 私はリテラル(language_id)を使用せずにこの結果を取得しようとしている、と代わりに参加

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

を映画の原語を選択するための2つのテーブル。

私が書く:

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

は、私はすべての行を取得します。

答えて

0

あなたが内部の一つの条件を追加する必要があり、結合を使用したくない:

あなたは、構文が正しい方向にあなたをつついているだろう、ANSI-スタイルが参加し使用していました。

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

これは非常に近いと思います。私は1つのエラーが発生しています。 "不明な列 'language.id'の 'where句'。"これは 'language'がキーワードであるという事実と関係がありますか? –

+0

language.idをlanguage.language_idに変更できますか?それは、どの列がテーブル言語のIDかによって異なります。 – HarryQuake

+0

* joinを使用したくない場合*:これは依然としてjoinであり、legacyおよびobsolete join構文を使用することのみです。 – sstan

0

2つのテーブル間で結合条件を指定していません。結果として、クエリーはデカルト積を生成していますが、間違いなくあなたが望むものはありません。

は場合
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' 
関連する問題