Имя: Пароль:
1C
 
Вопрос по запросу: "ВЫБРАТЬ ПЕРВЫЕ 1"
0 pho
 
20.12.09
10:56
Подскажите, если в запросе использую конструкцию ВЫБРАТЬ ПЕРВЫЕ 1 из регистра, и условие ГДЕ, то он как действует:
а) Берет первую запись регистра, проверяет её на условие. Если подходит, то в результате запроса одна запись, если не подходит - результат пустой.
б) Берет запись, проверяет на условие. Если не подходит, берет следующую и проверяет её. И т.д., пока не найдёт, если найдёт, удовлетворяющую условию. Её и выведет в результат запроса.

Например, запрос вида:
ВЫБРАТЬ ПЕРВЫЕ 1
 Таб.Номенклатура
ИЗ
 РегистрНакопления.ТоварыНаСкладах КАК Таб
ГДЕ
 Таб.Склад = &Склад
1 ДенисЧ
 
20.12.09
10:58
Получает результат запроса. Из него выбирает первые N (1)
2 los_hooliganos
 
20.12.09
10:58
хм... у тея есть таблица, сначала формируется отбор по условиям,
из сформированной таблицы береться первый кортеж.
3 NcSteel
 
20.12.09
10:59
Берется выборка записей согласно условиям , далее сортируется и из него берется только первая запись
4 los_hooliganos
 
20.12.09
10:59
вариант а)
5 pho
 
20.12.09
10:59
Отлично, спасибо!

Т.е. приоритет у ГДЕ и УПОРЯДОЧИТЬ, а уж затем у ПЕРВЫЕ
6 ДенисЧ
 
20.12.09
11:00
(5) ой, дохада...
7 pho
 
20.12.09
11:03
(4) Точно не б)? Говорят, что сперва таблица по условиям, затем первые.

(6) что такое "дохада"?
8 ДенисЧ
 
20.12.09
11:04
(7) Это попытка имитации малороссоского "гэкания", нет такой буквы в алфавите...
9 los_hooliganos
 
20.12.09
11:26
чтобы б) реализовать надо курсор открыть.
думаю у (0) на это мозгов не хватит.
10 ЗлобнийМальчик
 
20.12.09
11:36
(9) эммм? зачем курсор
(4) уверены?
11 denis200
 
20.12.09
11:57
Если выбирать из а и б, то ближе б, чем а.

А (2) правильно ответил. Хоть он и нахамил в (9)
12 los_hooliganos
 
20.12.09
18:48
(10) напиши б) на языке запросов 8.х
13 Jaap Vduul
 
20.12.09
18:53
(12)Вы внимательно прочитали пункт (а) из сабжа?
14 ShoGUN
 
20.12.09
19:37
ВЫБРАТЬ ПЕРВЫЕ 1
   ЗаказПокупателя.Ссылка
ИЗ
   Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
   ЗаказПокупателя.Дата >= &Дата

УПОРЯДОЧИТЬ ПО
   ЗаказПокупателя.Дата

Если передать в параметре начало дня, возвращает первый заказ за этот день. Так что ближе всё же к б), хотя работает, конечно, не перебором.
15 los_hooliganos
 
21.12.09
08:40
(13) прочитал. оба варианта лажа лажная))
16 los_hooliganos
 
21.12.09
08:42
вот как правильно:


ВЫБРАТЬ ПЕРВЫЕ 1
 Таб.Номенклатура
ИЗ
 РегистрНакопления.ТоварыНаСкладах КАК Таб
ГДЕ
 Таб.Склад = &Склад
ОПЦИИ прямой порядок
с рекомпиляцией