2017-02-09 6 views
0

ここに私のコードです...私はサブクエリを単独でテストしました。私は2つのテーブルだけで参加し、それは動作します。私がそれらを組み合わせると、コマンドが正しく終了しなかったというエラーが出ます。サブクエリでテーブルを結合するためにSQLコードが正しく実行されていません

select employees.last_name,departments.department_name,departments.location_id, locations.city 
FROM hr.employees, hr.departments, hr.locations 
where employees.department_id = departments.department_id 
AND departments.location_id = locations.location_id 
WHERE commission_pct = 
(select commission_pct 
from hr.employees 
where commission_pct IS NOT NULL) 
+0

commission_pctは単一の値ですが、サブクエリは一連の結果を返します。それは、 'select top 1 commission_pct'を持つのに役立ちますか?また、エラーをコピー/貼り付けできますか? –

+0

そして 'WHERE commission_pct'を' AND commission_pct'に変更してください – GurV

+0

ああ、あなたは2つのwhere節を持っています。 –

答えて

1

あなたの構文が間違っています。どのRDBMSを使用しているのか分かりませんが、少なくとも2つのWHERE句を持つことはできません。WHEREの代わりにANDを使用する必要があります。サブクエリは2つ以上の結果を返す可能性があり、=が失敗するとサブクエリに=の代わりにINを使用しているはずです。

また、廃止予定の結合構文も使用しています。これは、ANSI結合構文を使用する必要があります。例えば。

select employees.last_name,departments.department_name,departments.location_id, locations.city 
FROM hr.employees 
INNER JOIN hr.departments 
ON employees.department_id = departments.department_id 
INNER JOIN hr.locations 
ON departments.location_id = locations.location_id 
WHERE commission_pct IN 
(select commission_pct 
from hr.employees 
where commission_pct IS NOT NULL) 

また、それは同じくらい重要ではないかもしれないが、代わりにWHEREのサブクエリに対してある種のJOINを行うことを検討することをお勧めします。

+0

ありがとうIN文が働いた –

関連する問題