Официальный сайт студ.городка НГТУ
Программирование и БД » Нужна помощь в составлении SQL-запроса... 

#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

#2  30.11.09 19:23

Re: Нужна помощь в составлении SQL-запроса...

Код: sql:

SELECT s.name
FROM s, (
 
SELECT count( id ) AS counter, s
FROM os
WHERE 1 
GROUP BY s
) AS counters
WHERE s.id = counters.s
AND counter >2


:) Каг-то таг наверно

Offline

#3  30.11.09 19:58

Re: Нужна помощь в составлении SQL-запроса...

Кощей, спасибо, помогло...

Код: sql:

SELECT C.name
FROM Сотрудники С, (
	SELECT count(*) AS counter, idSotr
	FROM ОбязанностиСотрудников
	WHERE 1
	GROUP BY idSotr
	) counters
WHERE C.id = counters.idSotr
AND counter > 2

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

#5  30.11.09 22:20

Re: Нужна помощь в составлении SQL-запроса...

efferson, силён тип :) работает

Offline

#6  02.12.09 16:43

Re: Нужна помощь в составлении SQL-запроса...

lonley, не пиши никогда подселекты как из твоего поста. Получается, что для каждой связки Сотрудника и ОбязанностиСотрудника будет делаться твой подзапрос. Намного правильнее писать, как написал efferson!

Offline

#7  05.12.09 21:41

Re: Нужна помощь в составлении SQL-запроса...

samael, оптимизаторы норм баз уже давно сами такие штуки разворацивают

Offline

#8  06.12.09 14:28

Re: Нужна помощь в составлении SQL-запроса...

XuMiX, не всегда оптимизатор понимает все правильно. А если написать запрос другим способом, то оптимизатору ты выбора можешь не оставить, как встать на правильный план запроса!

З.Ы.
Проверялось не раз на на объемах больше 200млн строк

Offline

Программирование и БД » Нужна помощь в составлении SQL-запроса... 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.066 сек.
Выполнено 14 запросов.