Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Двойной SELECT, операция minus.  [new]
M.Cooper
Member

Откуда:
Сообщений: 5
Дорогие форумчане,
Пишу Вам, дабы больше не к кому обратиться ...

У меня следующая проблема, есть запрос, который звучит следующим образом: "Получить список актеров, которые подходят на роль по заданному критерию и при этом актер не должен находиться на гастролях."

У меня получия код, но без функции minus, поэтому он не работает должным образом:
SELECT  Сотрудник.Фио
FROM (SELECT  Сотрудник.ФИО FROM Сотрудник INNER JOIN Гастроли ON Сотрудник.ID_Сотрудника=Гастроли.ID_Сотрудника
WHERE (Гастроли.Дата_Поездки_Актера + Гастроли.Продолжительность) < DATE() GROUP BY Сотрудник.Фио)
WHERE (Актер.Размер="S")
GROUP BY Сотрудник.Фио;


Необходимо использовать 2 SELECTA: SELECT Размер MINUS SELECT Гастроли.

Помогите, пожалуйста, разобраться!
31 май 13, 17:19    [14377098]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
M.Cooper
Дорогие форумчане,
Пишу Вам, дабы больше не к кому обратиться ...

У меня следующая проблема, есть запрос, который звучит следующим образом: "Получить список актеров, которые подходят на роль по заданному критерию и при этом актер не должен находиться на гастролях."

У меня получия код, но без функции minus, поэтому он не работает должным образом:
SELECT  Сотрудник.Фио
FROM (SELECT  Сотрудник.ФИО FROM Сотрудник INNER JOIN Гастроли ON Сотрудник.ID_Сотрудника=Гастроли.ID_Сотрудника
WHERE (Гастроли.Дата_Поездки_Актера + Гастроли.Продолжительность) < DATE() GROUP BY Сотрудник.Фио)
WHERE (Актер.Размер="S")
GROUP BY Сотрудник.Фио;


Необходимо использовать 2 SELECTA: SELECT Размер MINUS SELECT Гастроли.

Помогите, пожалуйста, разобраться!


А что за функция minus?
31 май 13, 17:21    [14377104]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
M.Cooper, если у вас MS SQL, то вам поможет EXCEPT
31 май 13, 17:24    [14377116]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Glory
Member

Откуда:
Сообщений: 104751
M.Cooper
Необходимо использовать 2 SELECTA:

Это обязательное условие задачи что ли ?
31 май 13, 17:26    [14377132]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Гость333
Member

Откуда:
Сообщений: 3683
M.Cooper
DATE()
Размер="S"


Ваш запрос выполняется без ошибок? Если да, то какая у вас СУБД?
31 май 13, 17:28    [14377145]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
M.Cooper
Member

Откуда:
Сообщений: 5
Сергей Викт., Shakill, Операция MINUS применяется в Oracle, эквивалентная операция - EXCEPT, Вы правы, да, спасибо!)
НО, как мне использовать операцию EXCEPT в моем конкретном случае?
Гость333, у меня СУБД MS Access PC. Запрос с ошибками (
Glory, да, обязательно.
31 май 13, 17:34    [14377168]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
M.Cooper
Member

Откуда:
Сообщений: 5
На всякий случай, кидаю свою схему данных:

К сообщению приложен файл. Размер - 32Kb
31 май 13, 17:41    [14377196]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
not Access
Guest
так это раздел форума по SQL Server, а не по Access
31 май 13, 17:43    [14377207]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Glory
Member

Откуда:
Сообщений: 104751
M.Cooper
НО, как мне использовать операцию EXCEPT в моем конкретном случае?

Никак. Потому что она не нужна

SELECT *
FROM Актер
WHERE (Актер.Размер="S")
and not exists(<запрос который проверяет, что актер не должен находиться на гастролях>);
31 май 13, 20:46    [14377736]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Dianka815
Member

Откуда:
Сообщений: 1
Glory
(<запрос который проверяет, что актер не должен находиться на гастролях>);

А как этот проверочный запрос-то сформулировать? )
31 май 13, 21:08    [14377797]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Dianka815
А как этот проверочный запрос-то сформулировать? )

руками
31 май 13, 21:23    [14377822]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
M.Cooper
Member

Откуда:
Сообщений: 5
Glory, всем спасибо за проявленный интерес к моей теме. Буду пробовать.
31 май 13, 21:30    [14377837]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34696
Glory,

За not exists — ты мой кумир!
Я тоже не люблю всяческие ненужные проприетарные расширения...
31 май 13, 23:29    [14378069]     Ответить | Цитировать Сообщить модератору
 Re: Двойной SELECT, операция minus.  [new]
aleks2
Guest
Glory
M.Cooper
НО, как мне использовать операцию EXCEPT в моем конкретном случае?

Никак. Потому что она не нужна

SELECT *
FROM Актер
WHERE (Актер.Размер="S")
and not exists(<запрос который проверяет, что актер не должен находиться на гастролях>);


Ну, ежели человеку хоцца?

SELECT ID_Сотрудника FROM Актер WHERE (Актер.Размер="S")
except
SELECT ID_Сотрудника FROM Гастроли WHERE (на гастролях)
1 июн 13, 06:49    [14378526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить