Я немного новичок в SQL, и у меня есть эта проблема, чтобы получить конкретную информацию из трех таблиц. У меня есть эти три таблицы.
таблица сотрудников
фирменный стол
таблица занятости
EmployeeID в Занятости - FK
CompanyID в компании является FK
EmploymentID в Emplyment является PK
NULL в EmploymentEndDate in Employment означает, что работник в настоящее время работает там.
Я пытался это, но не работает
select Company.CompanyName as CompanyName , CONCAT( Employee.FirstName, ' ' ,Employee.LastName) as EmployeeName , Employment.EmploymentStartDate from Employment LEFT JOIN Employee on Employee.EmployeeID = Employment.EmployeeID
LEFT JOIN Company on Company.CompanyID = Employment.CompanyID
where Employment.EmploymentEndDate is null
and EXISTS(SELECT Employment.CompanyID, MAX(DATEDIFF( DAY,Employment.EmploymentStartDate ,GETDATE())) as MaxDate FROM Employment where Employment.EmploymentEndDate is null group by CompanyID)
и дает мне такой результат:
, что неправильно, потому что от компании "Steve's Widgets Inc" я ожидаю только Джона Доу, который является самым старым работником.
Это именно то, что я хочу, перечислить все компании и указать имя и дату начала сотрудника, который работал в компании, самого длинного из всех сотрудников, которые там сейчас работают.
(Ожидаемые столбцы: CompanyName, EmployeeName, EmploymentStartDate)