1
SELECT e.employee_id, e.last_name, d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id=d.department_id);

ON句は正確に何をしますか?e.department_idとd.department_idでエラーが発生しない理由がわかりません。eは従業員テーブルを表し、dは部門テーブルを表しませんか?では、department_idがemployeesテーブルにない場合、e.department_idをどのように使用できますか?ON句の目的について非常に混乱しています。

4

2 に答える 2

2

このON句はJOIN構文の一部であり、テーブルを相互に結合する方法、つまり、テーブルを相互に関連付ける列を識別するために使用されます。

あなたの場合、あなたはe.department_idとのテーブルを結合していd.department_idます。

はテーブルeのエイリアスであり、はテーブルのエイリアスです。employeesddepartments

現在のクエリはINNER JOIN、両方のテーブルで一致する行のみを返すを実行しています。

従業員の行に関連付けられていemployeesない場合でもすべてを返したい場合は、 :を使用する必要があります。departmentsLEFT JOIN

SELECT e.employee_id, e.last_name, d.department_id, d.location_id
FROM employees e 
LEFT JOIN departments d
  ON e.department_id=d.department_id;
于 2013-03-11T23:07:34.877 に答える
0

理解に役立つかどうかはわかりませんが、(推奨されていませんが)このクエリを暗黙の内部結合を使用してWHERE句の形式で書き直すことは可能です。

SELECT e.employee_id, e.last_name, d.department_id, d.location_id
FROM employees e, departments d
WHERE (e.department_id=d.department_id);
于 2013-03-11T23:33:21.187 に答える