- ベストアンサー
SQLの結合についての課題でエラーが出てしまった場合の修正方法
- SQLの結合についての課題でエラーが発生しました。特に、ERROR 1052 (23000) at line 17: Column 'departmentid' in on clause is ambiguousというエラーメッセージが表示されました。このエラーを修正する方法について教えていただきたいです。
- 問題2では部署名と社員名を取得するSQLを作成する必要があります。
- 与えられたソースコードでは、departmentsテーブルのdepartmentnameカラムとemployeesテーブルのdepartmentidカラムを結合していますが、結合条件の書き方が間違っているためにエラーが発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
JOINのON句のdepartmentidがどのテーブルのものかわからないためのエラーです。 テーブル名を付けて修飾してみてください。 ---- SELECT employeename, departmentname FROM employees INNER JOIN departments ON employees.departmentid = departments.departmentname; SELECT employeename, departmentname FROM employees LEFT OUTER JOIN departments ON employees.departmentid = departments.departmentname; ----
その他の回答 (1)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
SELECT employeename, departmentname FROM employees INNER JOIN departments ON departmentid = departmentname; SELECT employeename, departmentname FROM employees LEFT OUTER JOIN departments ON departmentid = departmentname; つまり、employees + departments という結合テーブルで、 departmentid = departmentname; って書いたので、 departmentid これは、どこのテーブルにあるの? departmentname これは、どこのテーブルにあるの? って聞いてるんです。 なので、テーブル名を書けばそれでOKです。 employees.departmentid = departments.departmentname; とか、 ただ、コードに違和感があり、気持ち悪いのは、 INTとVCHARを比較してるので、 employees.departmentid = departments.departmentid こうなんじゃないかな?と感じました。