#sql #sql-server #join
#sql #sql-сервер #Присоединиться
Вопрос:
У меня есть две таблицы, одна есть Employee
, а другая есть Dept
.
В Employee
таблице есть столбцы ID
, Name
, и DeptId
, а Dept
в таблице есть столбцы ID
, DeptName
.
Теперь, если написать запрос:
Select
ID, Name, ID, DeptName
from
Employee
Inner Join
Dept On Employee.DeptID = Dept.ID
Я получаю сообщение об ошибке, потому что он не знает, какой ID
столбец я имею в виду. Как мне однозначно определить столбцы?
Комментарии:
1. Пожалуйста, проверьте таблицу вашего отдела, есть ли у нее идентификатор столбца?
2. Да, у таблицы отдела было. Проблема решена. На самом деле, мне нужно было отличить столбец в левой таблице от столбца в правой таблице.
Ответ №1:
Просто включите явные псевдонимы, чтобы отделить ID
столбец в Employee
таблице от ID
столбца в Dept
таблице. На самом деле, рекомендуется всегда ссылаться на столбец по псевдониму при выполнении объединения, поэтому ваш запрос должен выглядеть примерно так:
SELECT e.ID AS employeeID,
e.Name,
e.DeptId,
d.ID AS deptID,
d.DeptName
FROM Employee e
INNER JOIN Dept d
ON e.DeptID = d.ID
Ответ №2:
Используйте псевдоним
Select E.ID as EmpID
, E.Name
, D.ID as DepID
, D.DeptName
From Employee E
Inner Join Dept D
On E.Employee.DeptID = D.Dept.ID
Ответ №3:
Вы также можете использовать имя таблицы в качестве квалификатора вместо псевдонима:
Select
Employee.ID, Employee.Name, Dept.ID, Dept.DeptName
from
Employee
Inner Join
Dept On Employee.DeptID = Dept.ID