powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Исключить результаты из запроса
4 сообщений из 4, страница 1 из 1
Исключить результаты из запроса
    #38486631
Warren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы, связанные между собой по полю ID.
В первой таблице каждая строка - клиент с уникальным ID и его данные.
Во второй - оформленные договоры с уникальным номером договора Dog_id, в котором в поле ID отвечает за клиента, на которого этот договор оформлен. Также строка содержит бинарное поле Dolg (1 - задолженность по договору, 0 - договор закрыт) и поле Date, хранящее срок, до которого договор должен быть закрыт.

По данным из второй таблицы ,используя DISTINCT, насколько я понимаю, для фильтрации договоров для одного ID-клиента, мне нужно отобрать клиентов, у которых вообще нет открытых договоров (Dolg=0), либо договор еще не просрочен (Dolg=1, Date<= CURRENT_DATE), и потом по ID объединить JOIN'ом объединить с первой таблицы, чтобы получить данные этих клиентов для последующей работы с ними.

Простой SELECT с двумя этими условиями по OR не проходит: для одного клиента с одним ID во второй таблице может содержаться, к примеру, три записи, две из которых для прошлых уже погашенных договоров с Dolg=0, а третья - текущая с просрочкой по договору. И именно по первым двум он попадет в результаты запроса.

Каким образом из результатов запроса можно ИСКЛЮЧИТЬ результаты другого запроса. Спасибо заранее.
...
Рейтинг: 0 / 0
Исключить результаты из запроса
    #38486656
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warrenмне нужно отобрать клиентов, у которых вообще нет открытых договоров
(Dolg=0), либо договор еще не просрочен (Dolg=1, Date<= CURRENT_DATE), и потом по ID
объединить JOIN'ом объединить с первой таблицы, чтобы получить данные этих клиентов для
последующей работы с ними.
Изучай формальную логику. Тебе нужны клиенты, у которых не существует (not exists)
просроченных договоров. Всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Исключить результаты из запроса
    #38486674
Warren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Большое спасибо. С логикой проблем, вроде бы, нет, а о существовании EXIST не знал, погуглил, буду пробовать
...
Рейтинг: 0 / 0
Исключить результаты из запроса
    #38487463
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Warren,

В отсутствие EXIST не менее эффективно работает LEFT JOIN + WHERE IS NULL
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Исключить результаты из запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]