Получите текущих менеджеров всех сотрудников. Если текущий менеджер является самим сотрудником, то такой результат не отображается. "Текущее" означает, что to_date='9999-01-01'
.
Первый столбец в результате должен содержать текущий номер сотрудника (emp_no
), а второй — номер его менеджера (manager_no
).
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`)
);
CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`)
);
SELECT de.emp_no, dm.emp_no AS manager_no FROM dept_emp de LEFT JOIN dept_manager dm ON de.dept_no = dm.dept_no WHERE de.to_date = '9999-01-01' AND dm.to_date = '9999-01-01' AND de.emp_no != dm.emp_no
Для получения текущего менеджера каждого сотрудника используется объединение таблиц dept_emp
и dept_manager
. Мы используем левое соединение (LEFT JOIN
) между этими двумя таблицами с условием совпадения dept_no
, чтобы связать записи сотрудников и их менеджеров.
Затем мы применяем условия, чтобы выбрать только те строки, где to_date
равна '9999-01-01'
как для сотрудников, так и для менеджеров, и чтобы исключить случаи, когда менеджером является сам сотрудник (de.emp_no != dm.emp_no
).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )