powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / where 1=1
23 сообщений из 23, страница 1 из 1
where 1=1
    #35799156
Dmitry6237
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сижу ковыряю отчеты одной системы, и в каждом запросе фижу такую конструкцию


select ....
from ....
whre 1=1
and ......


никак не пойму зачем нужно условие 1=1
...
Рейтинг: 0 / 0
where 1=1
    #35799180
Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Q
Гость
Чтобы в коде, запускающем отчет делать
qry = Replace(qry, "1=1", myCondition)
? :)
...
Рейтинг: 0 / 0
where 1=1
    #35799189
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иногда так делают, когда текст секции WHERE генерится циклом с с конкатенацией строки вида " AND условие_номер_i "
...
Рейтинг: 0 / 0
where 1=1
    #35799240
Dmitry6237
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QЧтобы в коде, запускающем отчет делать
qry = Replace(qry, "1=1", myCondition)
? :)

miksoftиногда так делают, когда текст секции WHERE генерится циклом с с конкатенацией строки вида " AND условие_номер_i "




в том то и дело что запросы заданы жестко и автоматически не генерится.

з.ы. да и посмотреть первое условие это или нет тоже проблем не составит если автоматом генерить
...
Рейтинг: 0 / 0
where 1=1
    #35799263
Q
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Q
Гость
Разработчики вполне могли пользоваться каким-то генератором для текста запросов, да и для самих форм отчетов тоже.
...
Рейтинг: 0 / 0
where 1=1
    #35799399
Dmitry6237
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Q,

вариант!

а еще варианты есть?
...
Рейтинг: 0 / 0
where 1=1
    #35799622
Фотография gds
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry6237
whre 1=1

Как и было сказано в основном это делается для облегчения конструкции динамически добавляемых переменных.
Например отчет в конечном результате будет иметь следующий запрос.
[SRC = sql]
select ...
from ....
where 1=1
-- след условие добовляется генератором
and поле = значение

and поле = значение

and поле = значение
[/src]для удобство добавления.
...
Рейтинг: 0 / 0
where 1=1
    #35799951
Фотография Mr Marmelad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry6237никак не пойму зачем нужно условие 1=1

Одной из исторических причин использования таких конструкций ещё со времём SYBASE T-SQL является передача клиенту данных о структуре объекта (таблицы или вьюхи) вместе со значениями. Тогда не было ещё простого визуального обращения за колонками. Писали просто
Код: plaintext
SELECT * FROM MyTable WHERE  1 = 1  
и получали колоночки и данные (Character Mode) , а если надо было просто вывести колоночки писали
Код: plaintext
SELECT * FROM MyTable WHERE  1 = 0 
Ведь весь смысл такого предтсавления в выводе данных по логически правильному (true) или неправильному (false) возврату из WHERE клоз....
...
Рейтинг: 0 / 0
where 1=1
    #35800643
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry6237 пишет:

> select ....
> from ....
> whre 1=1

1=1 - это контанта "TRUE".
В SQL нет булевского типа данных. Поэтому
приходится вот так. А для чего оно надо в данном
конкретном случае - не понятно, надо просить
автора рассказать. В генерённом коде это надо
было бы для того, чтобы если ни одного условия
не было бы добавлено, (ни одного and ...),
запрос был бы синтаксически валиден и семантически
возвращал бы всё, без фильтров.

У нас код не генерённый, но некторорые ставят такие
штуки просто чтобы было удобно в редакторе править
код: одна строчка - одно условие, всегда начинающееся
с AND.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
where 1=1
    #35800669
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
В генерённом коде это надо
было бы для того, чтобы если ни одного условия
не было бы добавлено, (ни одного and ...),
запрос был бы синтаксически валиден и семантически
возвращал бы всё, без фильтров.

+ 1. наиболее вероятно, автоматическая генерация запросов. Если генератор слабенький и не обладает нормальным синаксическим анализатором, то это простейший путь для добавления дополнительных WHERE- условий.
...
Рейтинг: 0 / 0
where 1=1
    #35800672
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry6237з.ы. да и посмотреть первое условие это или нет тоже проблем не составит если автоматом генерить
а по некоторому готовому тексту узнать это первое условие или нет тоже банально? :)

----
если есть неструктурированный запрос, то подобная конструкция дает самый тривиальный способ добавления к существующему тексту дополнительных условий.
...
Рейтинг: 0 / 0
where 1=1
    #35800675
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr Marmeladа если надо было просто вывести колоночки писали
Код: plaintext
SELECT * FROM MyTable WHERE  1 = 0 

так и сейчас пишут, если требуется пустой набор данных . Дешево (для СУБД) и сердито (constant scan).
...
Рейтинг: 0 / 0
where 1=1
    #35800676
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafmесли есть неструктурированный запрос, то подобная конструкция дает самый тривиальный способ добавления к существующему тексту дополнительных условий.
если конечно в тексте нет ORDER BY, GROUP BY, HAVING...
...
Рейтинг: 0 / 0
where 1=1
    #35800808
Dmitry6237
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr MarmeladDmitry6237никак не пойму зачем нужно условие 1=1

Одной из исторических причин использования таких конструкций ещё со времём SYBASE T-SQL является передача клиенту данных о структуре объекта (таблицы или вьюхи) вместе со значениями. Тогда не было ещё простого визуального обращения за колонками. Писали просто
Код: plaintext
SELECT * FROM MyTable WHERE  1 = 1  
и получали колоночки и данные (Character Mode) , а если надо было просто вывести колоночки писали
Код: plaintext
SELECT * FROM MyTable WHERE  1 = 0 
Ведь весь смысл такого предтсавления в выводе данных по логически правильному (true) или неправильному (false) возврату из WHERE клоз....
ога, именно sybase! а подскажете где можно по подробнее почитать?
...
Рейтинг: 0 / 0
where 1=1
    #35801084
Я с такой записью как-то встретился на сервере у знакомого, и мне объяснили, что таким образом гораздо легче комментить условия...т.к. у каждого своя строка, начинающаяся с and
...
Рейтинг: 0 / 0
where 1=1
    #35801516
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ягодная карусельЯ с такой записью как-то встретился на сервере у знакомого, и мне объяснили, что таким образом гораздо легче комментить условия...т.к. у каждого своя строка, начинающаяся с andИ это так!
пока пишешь запрос иногда приходится перебирать разные варианты его компановки.
Коментировать условия не удаляя - проще так.
Код: plaintext
1.
2.
WHERE  1 = 1 
--  and region_id in (50,77)
  and org_type_id =  21 
Когда запрос готов, то я не удаляю строку 1=1, потому что она никому не мешает.

Ну и автогенератор условий - это вторая часть когда это используется.
...
Рейтинг: 0 / 0
where 1=1
    #36319061
guest07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне попался запрос вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select *
  from 
       tab1 a,
       tab2 b,
       tab3 c,
       tab4 d
where 
       a.id2 = b.id and
       a.id3 = c.id and
       a.id4 = d.id and
       a.dt >= '01.01.2008' and

        1 = 1  and  1 = 1  and  1 = 1  and

       a.ver =  0 

Зачем в нем три раза условие 1=1?
...
Рейтинг: 0 / 0
where 1=1
    #36319109
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автогенератор с ошибками? :))
...
Рейтинг: 0 / 0
where 1=1
    #36319147
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в таблице tab1, небось 8 полей? ;-)
...
Рейтинг: 0 / 0
where 1=1
    #36319164
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest07Мне попался запрос вида
Код: plaintext
1.
2.
        1 = 1  and  1 = 1  and  1 = 1  and

       a.ver =  0 

Зачем в нем три раза условие 1=1?

Ну как же, для надёжности
...
Рейтинг: 0 / 0
where 1=1
    #36319190
guest07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychа в таблице tab1, небось 8 полей? ;-)
нет, в ней 15 полей
...
Рейтинг: 0 / 0
where 1=1
    #36319556
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
место для дополнительной фильтрации присоединяемых таблиц ?
...
Рейтинг: 0 / 0
where 1=1
    #36328631
papuas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я работал с приложением, через которое можно было писать запросы к базе данных, и если запрос выглядел как delete from table без условий или update без условий, то он выдавал запрос подтверждения, типа "вы уверены?", а если было дописать where 1 = 1 , то выполнялось все без дополнительных вопросов.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / where 1=1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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