2012-04-08 1 views
0

поэтому моя главная цель с этим запросом - выбрать все отделы и сотрудников под менеджером по имени Марио Соуза.Как упростить этот запрос?

SELECT d.deptname,e.name FROM employee e JOIN department d ON e.dept = d.deptnum WHERE idmanager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
) AND manager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
) 

И это работает, но есть способ, которым я мог бы хранить первый В результате, чтобы я мог использовать его в дальнейшем после AND оператора?

+0

1) Итак, у сотрудника может быть менеджер, отличный от менеджера отдела, в котором он работает? 2) Если у сотрудника есть менеджер, отличный от Марио, но работает в отделе, менеджером которого является Марио, должен ли он отображаться? –

+0

На самом деле это упражнение, и вопрос не указывает, что вы только что спросили, но я просто разрешу его в обоих направлениях. Благодарю. –

ответ

2

Вы можете использовать EXISTS для соответствия нескольким столбцам.

WHERE EXISTS 
(
    SELECT * 
    FROM employee AS manager 
    WHERE manager.name = 'Mario Souza' 
    AND manager.id = e.idmanager 
    AND manager.id = d.manager 
) 
+0

Спасибо, он отлично поработал, и я не знал о состоянии EXIST, поэтому еще раз спасибо за его показ. –

1

Вы можете использовать JOIN с таблицей сотрудников. Просто поставьте оба менеджера и idmanager в предложение ON.

+0

Ваш ответ также работал на этот случай и был проще. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^