Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2008, 10:34   #1
Tanusha
Пользователь
 
Регистрация: 18.07.2008
Сообщений: 21
Радость Exist и not Exist

Привет! не могу разделаться с запросом. Есть таблица "owe" c полями clients_id, day, types_charges_id и т.д.
нужно выбрать строки, где присутсивует только один тип начислений 1 или 2 (по идее у каждого клиента должен быть и тот и другой тип), я выбираю только тех, у которых есть первый!!
но запрос не работает
Incorrect syntax near the keyword 'select'
Incorrect syntax near ')'.
Вот запрос:
select *
from owe o
where Exist
(select o.clients_id
from owe o
where o.types_charges_id = 1)
and
Not Exist
(select o.clients_id
from owe o
where o.types_charges_id = 2)
Если кто нибудь знает подскажите плиз!
Tanusha вне форума Ответить с цитированием
Старый 19.12.2008, 10:42   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Я, например, знаю оператор EXISTS, а вот про EXIST впервые слышу...
И еще - зачем использовать квалификатор, если у вас участвует только одна таблица?
mihali4 вне форума Ответить с цитированием
Старый 19.12.2008, 12:36   #3
Tanusha
Пользователь
 
Регистрация: 18.07.2008
Сообщений: 21
По умолчанию

да я исправила!
Tanusha вне форума Ответить с цитированием
Старый 12.03.2009, 19:15   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну если все действительно так
Цитата:
нужно выбрать строки, где присутсивует только один тип начислений 1 или 2 (по идее у каждого клиента должен быть и тот и другой тип), я выбираю только тех, у которых есть первый!!
то селект не должен вернуть ни одной строчки
soleil@mmc вне форума Ответить с цитированием
Старый 12.03.2009, 22:51   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Tanusha
да я исправила!
Танюша, ну и?... "Исправила и всё работает" или "Исправила и всё равно не работает" ????!

вижу, Вы используете Оракл
Тогда, в качестве альтернативы могу предложить запрос аналогичный Вашему, просто по другому записанный:

Код:
select * from owe o1
where o1.clients_id in  
(select o.clients_id from owe o 
   where o.types_charges_id = 1)
and
Not o1.clients_id Not In
  (select o.clients_id from owe o 
   where o.types_charges_id = 2)
а вообще, в данном случае нужный тип уже в той же таблице, из которой нужно выбрать данные, так будет чуток попроще/эффективней:

Код:
select * from owe o1
where o1.types_charges_id = 1
and
Not o1.clients_id Not In
  (select o.clients_id from owe o 
   where o.types_charges_id = 2)

удачи!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2009, 09:16   #6
Tanusha
Пользователь
 
Регистрация: 18.07.2008
Сообщений: 21
По умолчанию

Спасибо, у меня прокатил мой вариант, находит то что нужно!!!

declare @d1 datetime, @d2 datetime
set @d1='2009-02-01'
set @d2='2009-02-28'

Select c.[id], c.[name], c.day_begin, c.day_begin_dog, c.day_end
from clients c
where Exists (select cu.clients_id
from owe o
where cu.clients_id = c.[id]
and cu.types_charges_id = 1
and cu.[day] = @d2)
and Not Exists (select cu.clients_id
from owe o
where cu.clients_id = c.[id]
and cu.types_charges_id = 2
and cu.[day] = @d2)

я кстати с MS SQLем работаю
Tanusha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
file exist TaTT DoGG Общие вопросы Delphi 4 16.05.2008 11:27
Property "AllowCookies does not exist" - Помогите Yuran Работа с сетью в Delphi 6 17.04.2008 18:27
че делать если вылетает ошибка Table does not exist? Алёна БД в Delphi 4 25.04.2007 15:09