Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / where 1=1 / 23 сообщений из 23, страница 1 из 1
05.02.2009, 14:10
    #35799156
Dmitry6237
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
сижу ковыряю отчеты одной системы, и в каждом запросе фижу такую конструкцию


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


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

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




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

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

вариант!

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

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

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

and поле = значение
[/src]для удобство добавления.
...
Рейтинг: 0 / 0
05.02.2009, 17:26
    #35799951
Mr Marmelad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
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
06.02.2009, 01:18
    #35800643
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
Dmitry6237 пишет:

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

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

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

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

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

так и сейчас пишут, если требуется пустой набор данных . Дешево (для СУБД) и сердито (constant scan).
...
Рейтинг: 0 / 0
06.02.2009, 02:14
    #35800676
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
iscrafmесли есть неструктурированный запрос, то подобная конструкция дает самый тривиальный способ добавления к существующему тексту дополнительных условий.
если конечно в тексте нет ORDER BY, GROUP BY, HAVING...
...
Рейтинг: 0 / 0
06.02.2009, 08:42
    #35800808
Dmitry6237
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
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
06.02.2009, 10:44
    #35801084
where 1=1
Я с такой записью как-то встретился на сервере у знакомого, и мне объяснили, что таким образом гораздо легче комментить условия...т.к. у каждого своя строка, начинающаяся с and
...
Рейтинг: 0 / 0
06.02.2009, 12:46
    #35801516
Bely
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
Ягодная карусельЯ с такой записью как-то встретился на сервере у знакомого, и мне объяснили, что таким образом гораздо легче комментить условия...т.к. у каждого своя строка, начинающаяся с andИ это так!
пока пишешь запрос иногда приходится перебирать разные варианты его компановки.
Коментировать условия не удаляя - проще так.
Код: plaintext
1.
2.
WHERE  1 = 1 
--  and region_id in (50,77)
  and org_type_id =  21 
Когда запрос готов, то я не удаляю строку 1=1, потому что она никому не мешает.

Ну и автогенератор условий - это вторая часть когда это используется.
...
Рейтинг: 0 / 0
19.11.2009, 10:56
    #36319061
guest07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
Мне попался запрос вида
Код: 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
19.11.2009, 11:13
    #36319109
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
автогенератор с ошибками? :))
...
Рейтинг: 0 / 0
19.11.2009, 11:22
    #36319147
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
а в таблице tab1, небось 8 полей? ;-)
...
Рейтинг: 0 / 0
19.11.2009, 11:26
    #36319164
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where 1=1
Guest07Мне попался запрос вида
Код: plaintext
1.
2.
        1 = 1  and  1 = 1  and  1 = 1  and

       a.ver =  0 

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

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


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