powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Альтернатива оператору NOT ??
6 сообщений из 6, страница 1 из 1
Альтернатива оператору NOT ??
    #38451529
Billet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
приходиться работать с одним специфическим фреймворком для работы с БД в рамках одного большого проекта, а значит все запросы к БД генерирует этот фреймворк как посредник/помощник. К сожалению узнал, что фреймворк не умеет генерировать SQL запросы с оператором NOT.

Вопрос у меня таков, есть ли альтернатива NOT, или как избежать его использования?

Суть запроса примерно такова:

SELECT * FROM XXX_TABLE WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb') AND NOT(FIELD1 = 'ccc' AND FIELD2 = 'ddd')

как видно, мне необходимо исключить записи согласно представленным парам. Обратный ход - указать только те пары, которые нужно включить в запрос - не возможно, ввиду огромного количества вариантов.
Кстати, подзапросы не смогут быть решением в моём случае, по той же причине что и NOT.

Спасибо.
...
Рейтинг: 0 / 0
Альтернатива оператору NOT ??
    #38451563
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BilletЗдравствуйте.
приходиться работать с одним специфическим фреймворком для работы с БД в рамках одного большого проекта, а значит все запросы к БД генерирует этот фреймворк как посредник/помощник. К сожалению узнал, что фреймворк не умеет генерировать SQL запросы с оператором NOT.

Вопрос у меня таков, есть ли альтернатива NOT, или как избежать его использования?

Суть запроса примерно такова:

SELECT * FROM XXX_TABLE WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb') AND NOT(FIELD1 = 'ccc' AND FIELD2 = 'ddd')

как видно, мне необходимо исключить записи согласно представленным парам. Обратный ход - указать только те пары, которые нужно включить в запрос - не возможно, ввиду огромного количества вариантов.
Кстати, подзапросы не смогут быть решением в моём случае, по той же причине что и NOT.

Спасибо.

WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')....
...
Рейтинг: 0 / 0
Альтернатива оператору NOT ??
    #38451795
Billet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc
WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')....

В этом случае вы вычеркните ВСЕ записи где FIELD1 равен ааа, или FIELD2 равен bbb.
А мне необходимо вычеркнуть лишь те записи, где FIELD1 = 'aaa' and FIELD2='bbb' в одной записи(строке), т.е. пара значений.
...
Рейтинг: 0 / 0
Альтернатива оператору NOT ??
    #38451818
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BilletjavajdbcWHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')....

В этом случае вы вычеркните ВСЕ записи где FIELD1 равен ааа, или FIELD2 равен bbb.
А мне необходимо вычеркнуть лишь те записи, где FIELD1 = 'aaa' and FIELD2='bbb' в одной записи(строке), т.е. пара значений.
тогда ваш сабжевый запрос - неправильный ,
это
Код: sql
1.
WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb') 


эквивалентно этому
Код: sql
1.
WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')


Законы де Моргана вдруг чё

----
а это
авторА мне необходимо вычеркнуть лишь те записи, где FIELD1 = 'aaa' and FIELD2='bbb' в одной записи(строке), т.е. пара значений.
просто
Код: sql
1.
WHERE (FIELD1 != 'aaa' and FIELD2 != 'bbb')
...
Рейтинг: 0 / 0
Альтернатива оператору NOT ??
    #38451843
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112а это
авторА мне необходимо вычеркнуть лишь те записи, где FIELD1 = 'aaa' and FIELD2='bbb' в одной записи(строке), т.е. пара значений.
просто
Код: sql
1.
WHERE (FIELD1 != 'aaa' and FIELD2 != 'bbb')


"это" - отменяется :))

всё правильно и в сабжевом запросе и в запросе javajdbc
авторВ этом случае вы вычеркните ВСЕ записи где FIELD1 равен ааа, или FIELD2 равен bbb.

вот в этом ТС - ошибается,
и WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb')
и WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')
"убирают" записи с FIELD1 = 'aaa' И FIELD2 = 'bbb'
...
Рейтинг: 0 / 0
Альтернатива оператору NOT ??
    #38452118
Billet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty112вот в этом ТС - ошибается,
и WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb')
и WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')
"убирают" записи с FIELD1 = 'aaa' И FIELD2 = 'bbb'

Спасибо javajdbc и qwerty112 и де Морган,
действительно
и WHERE NOT(FIELD1 = 'aaa' AND FIELD2 = 'bbb')
и WHERE (FIELD1 != 'aaa' OR FIELD2 != 'bbb')
эквивалентны!
Видимо по другой причине у меня не сработал альтернативный запрос в прошлый раз.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Альтернатива оператору NOT ??
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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