Имя: Пароль:
1C
 
Запрос возвращает ошибку. Помогите
0 Ksandr
 
17.03.09
15:13
Запрос:

ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   Сделка.Ссылка КАК Договор
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.УС_Договор КАК Сделка
       ПО (Сделка.Контрагент = Контрагенты.Ссылка)
           И (Сделка.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   СделкаК.Ссылка
               ИЗ
                   Документ.УС_Договор КАК СделкаК
               ГДЕ
                   СделкаК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   СделкаК.Дата))
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   Сделка.Ссылка КАК Договор
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.УС_Договор КАК Сделка
       ПО (Сделка.Контрагент = Контрагенты.Ссылка)
           И (Сделка.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 2
                   СделкаК.Ссылка
               ИЗ
                   Документ.УС_Договор КАК СделкаК
               ГДЕ
                   СделкаК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   СделкаК.Дата УБЫВ))

ИТОГИ ПО
   Контрагент


Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: ORDER BY items must appear in the select list if the statement contains a UNION operator
HRESULT=80040E14, SQLSrvr: Error state=1, Severity=F, native=104, line=1
1 Aprobator
 
17.03.09
15:18
Перевожу: УПОРЯДОЧИТЬ ПО поле должно быть указано в ВЫБОР в случае использования оператора ОБЪЕДИНЕНИЕ.
2 Ksandr
 
17.03.09
15:21
А как применить - не понимаю
3 73
 
17.03.09
15:34
Это ж из v8: Помогите составить запрос
Насколько я помню, у тебя документ другой. Не копипасти. Покажи, что у тебя сейчас.

(0) На моих документах и Postgre работает.
4 Aprobator
 
17.03.09
15:35
блин, во вложенные запросы под СделкаК.Ссылка Добавить Поле СделкаК.Дата.
5 73
 
17.03.09
15:41
(4) Повторяю: (0) На моих документах и Postgre работает.

И так как есть работает, и с разбивкой в пакет тоже работает.
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   ЗаказПокупателя.Ссылка КАК Договор
Поместить ПервыеДоговора
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       левое СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
       ПО (ЗаказПокупателя.Контрагент = Контрагенты.Ссылка)
           И (ЗаказПокупателя.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   ЗаказПокупателяК.Ссылка
               ИЗ
                   Документ.ЗаказПокупателя КАК ЗаказПокупателяК
               ГДЕ
                   ЗаказПокупателяК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   ЗаказПокупателяК.Дата ))
;
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   ЗаказПокупателя.Ссылка КАК Договор
Поместить ПоследниеДоговора
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       левое СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя
       ПО (ЗаказПокупателя.Контрагент = Контрагенты.Ссылка)
           И (ЗаказПокупателя.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 2
                   ЗаказПокупателяК.Ссылка
               ИЗ
                   Документ.ЗаказПокупателя КАК ЗаказПокупателяК
               ГДЕ
                   ЗаказПокупателяК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   ЗаказПокупателяК.Дата УБЫВ))

;
Выбрать Контрагент, договор Из ПервыеДоговора
Объединить все
Выбрать Контрагент, договор Из ПоследниеДоговора


ИТОГИ ПО
   Контрагент
6 Aprobator
 
17.03.09
15:42
(5) пакетный запрос рулит :)
7 73
 
17.03.09
15:43
(5)+ Единственное, что может MSSQL не хавает. Но это проверить не могу.
8 Ksandr
 
17.03.09
15:56
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   Заказ.Ссылка КАК ЗаказСсылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказ
       ПО (Заказ.Контрагент = Контрагенты.Ссылка)
           И (Заказ.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 1
                   СделкаК.Ссылка
               ИЗ
                   Документ.ЗаказПокупателя КАК СделкаК
               ГДЕ
                   СделкаК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   СделкаК.Дата))
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
   Контрагенты.Ссылка КАК Контрагент,
   Заказ.Ссылка КАК ЗаказСсылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК Заказ
       ПО (Заказ.Контрагент = Контрагенты.Ссылка)
           И (Заказ.Ссылка В
               (ВЫБРАТЬ ПЕРВЫЕ 2
                   СделкаК.Ссылка
               ИЗ
                   Документ.ЗаказПокупателя КАК СделкаК
               ГДЕ
                   СделкаК.Контрагент = Контрагенты.Ссылка
               УПОРЯДОЧИТЬ ПО
                   СделкаК.Дата УБЫВ))

ИТОГИ ПО
   Контрагент
9 Ksandr
 
17.03.09
15:58
Начальство отвлекало другими задачами, не мог написать
10 73
 
17.03.09
16:03
Скопировал (8) к себе 1:1 - работает.
11 73
 
17.03.09
16:04
(10)+ Попробуй пакетом, если что.
12 Ksandr
 
17.03.09
16:19
а как это в консоли отчетов испробовать?
13 73
 
17.03.09
16:25
Скопируй (5) и вставь.
14 SMakcik
 
17.03.09
16:34
УПОРЯДОЧИТЬ ПО
подобно
СГРУППИРОВАТЬ

и если поля нет в выборке, то как он тебе должен группировать или упорядочивать.
15 Ksandr
 
17.03.09
16:35
на ";" ругается
16 Ksandr
 
17.03.09
16:40
в (5)
17 SMakcik
 
17.03.09
16:40
он не на ";" ругается, а что в запросе есть ошибка
18 Ksandr
 
17.03.09
16:40
(17) подскажи решение, пожалуйста
19 SMakcik
 
17.03.09
16:41
а ; вообще не должно быть. зачем это
20 Ksandr
 
17.03.09
16:41
Ругается на "ВЫБРАТЬ" если убрать
21 SMakcik
 
17.03.09
16:44
Вообще-то у меня так выполняется

ВЫБРАТЬ ПЕРВЫЕ 2
                   СделкаК.Ссылка
               ИЗ
                   Документ.ЗаказПокупателя КАК СделкаК
               УПОРЯДОЧИТЬ ПО
                   СделкаК.Дата УБЫВ
22 SMakcik
 
17.03.09
16:45
покажи полный запрос который у тебя щас действует и какую ошибку дает
23 Ksandr
 
17.03.09
16:48
Копировал запрос (5)
24 SMakcik
 
17.03.09
16:49
ну и что не выполняется. сейчас скопировал и все работает
25 Ksandr
 
17.03.09
16:49
ты просто скопировал и ничего не делал?
26 Ksandr
 
17.03.09
16:50
(5) или (8)
27 SMakcik
 
17.03.09
16:51
и ничего не дела
28 SMakcik
 
17.03.09
16:51
хватит мозги пудрить. ты или внимательней делай
или давай свой код и говори ошибку
29 Ksandr
 
17.03.09
16:53
Синтаксическая ошибка ";"
<<?>>; Строка 18
30 Ksandr
 
17.03.09
16:53
Код (5)
31 SMakcik
 
17.03.09
16:55
у тебя идет синтаксическая ошибка.
ты 1С знаешь
32 SMakcik
 
17.03.09
16:55
и где выполняешь
33 Ksandr
 
17.03.09
16:55
(31) Укажи на нее, пожалуйста
34 SMakcik
 
17.03.09
16:56
зачем ты ";" скопировал лишнюю
35 Ksandr
 
17.03.09
16:56
в консоли отчетов
36 Ksandr
 
17.03.09
16:57
(34) не мог бы ты продублировать свою версию?
37 73
 
17.03.09
16:58
Блин, в (5) полностью рабочий запрос.
Кто не знает: в языке запросов ; - разделяет запросы в пакете.
38 73
 
17.03.09
16:59
(37)+ скопировать надо от первого ВЫБРАТЬ до конца!! захватив ИТОГИ ПО...
39 SMakcik
 
17.03.09
17:07
в пять есть поместить во временную таблицу.
и первые запросы помещают.

а следующий запрос выбирает из низ.
а ";" это разделение запросов.
аналогично "....";
40 SMakcik
 
17.03.09
17:08
и дали (8) для этого чтобы не было ошибок
41 73
 
17.03.09
17:08
(40) У тебя какой SQL?
42 73
 
17.03.09
17:10
(41)+
(5) и (8) я на Postgre проверил, но у автора MSSQL.
Потому и спрашиваю.
43 SMakcik
 
17.03.09
17:21
у меня SQL2005
44 Регистратор
 
17.03.09
17:24
инструкция объединение в общем случае не гарантирует определенный порядок возврата записей, поэтому целесообразно упорядочивани применять уже к объединению, о чем видимо скл сервер и сообщает
45 73
 
17.03.09
17:38
(43) Значит SQL не виноват.
Автор, платформа версия какая?
46 Ksandr
 
18.03.09
08:10
(45) SQL2000
47 Ksandr
 
23.03.09
10:41
Все решилось при обновлении платформы на 8.1.13.68
ВСЕМ СПАСИБО ЗА ПОМОЩЬ