#1 30.11.09 18:08
Нужна помощь в составлении SQL-запроса...
есть 3 таблицы:
Сотрудники
----------------
id | name
Обязанности
----------------
id | name
ОбязанностиСотрудников
----------------
id | idSotr | idObyaz
нужно выбрать имена сотрудников, у которых больше 2-х обязанностей.
делаю так:
Код: SQL:
SELECT С.name FROM Сотрудники С, ОбязанностиСотрудников ОС WHERE С.id = ОС.ids AND 2 < (SELECT count(*) FROM Сотрудники С, ОбязанностиСотрудников ОС WHERE ОС.ids = С.id)
понимаю, что фигня какая-то :)
Исправлено lonley (30.11.09 18:08)
Offline
#4 30.11.09 22:11
Re: Нужна помощь в составлении SQL-запроса...
Нет под рукой базы, поэтому за правильность синтаксиса не ручаюсь, но задачу можно решить и без коррелированных запросов, что гораздо удачней:
Код: SQL:
SELECT С.name FROM Сотрудники С JOIN ОбязанностиСотрудников ОС ON (C.id = OC.idSotr) GROUP BY c.name HAVING count(*) > 2
Исправлено efferson (30.11.09 22:12)
Offline
#8 06.12.09 14:28
Re: Нужна помощь в составлении SQL-запроса...
XuMiX, не всегда оптимизатор понимает все правильно. А если написать запрос другим способом, то оптимизатору ты выбора можешь не оставить, как встать на правильный план запроса!
З.Ы.
Проверялось не раз на на объемах больше 200млн строк
Offline

