![]() |
![]() |
![]() |
|
В качестве поля запроса вложенный запрос. | ☑ | ||
---|---|---|---|---|
0
0xFFFFFF
29.04.09
✎
11:09
|
Почему 1С ругается на конструкцию типа
ВЫБРАТЬ ПерваяТаб.А КАК А ПерваяТаб.Б КАК Б (ВЫБРАТЬ ПЕРВЫЕ 1 ВтораяТаб.С ИЗ ВтораяТаб ГДЕ (ПерваяТаб.А = ВтораяТаб.А) И (ПерваяТаб.Б = ВтораяТаб.Б)) КАК С ИЗ ПерваяТаб Ругается именно на ВЫБРАТЬ в скобках. Нельзя в качестве поля запроса использовать вложенный запрос? |
|||
1
0xFFFFFF
29.04.09
✎
11:10
|
Запятые забыл расставить. Вопрос в силе.
ВЫБРАТЬ ПерваяТаб.А КАК А, ПерваяТаб.Б КАК Б, (ВЫБРАТЬ ПЕРВЫЕ 1 ВтораяТаб.С ИЗ ВтораяТаб ГДЕ (ПерваяТаб.А = ВтораяТаб.А) И (ПерваяТаб.Б = ВтораяТаб.Б)) КАК С ИЗ ПерваяТаб |
|||
2
hhhh
29.04.09
✎
11:14
|
(1) во вложенном запросе у тебя ПерваяТаб неопределена. Как ты по ней проверяешь?
|
|||
3
Defender aka LINN
29.04.09
✎
11:16
|
Да пофигу как. Нельзя.
|
|||
4
RKx
29.04.09
✎
11:17
|
Взлом 1с сервера?:)
|
|||
5
0xFFFFFF
29.04.09
✎
11:18
|
(2) Как это неопределена? Запрос то вложен в ПерваяТаб
|
|||
6
0xFFFFFF
29.04.09
✎
11:19
|
В MSSQL такой запрос работает... А как тут подобное сделать?
|
|||
7
hhhh
29.04.09
✎
11:20
|
СОЕДИНЕНИЕ попробуй
|
|||
8
0xFFFFFF
29.04.09
✎
11:23
|
Если сделать левое соединение со ВтораяТаб, то в итоговой таблице могут задублиться значение по сравнению с ПерваяТаб.
А мне ПерваяТаб нужно оставить без изменений по количеству строк, и присоседить значение С из второй таблице (любое по полям А и Б) |
|||
9
0xFFFFFF
29.04.09
✎
11:27
|
Неужели нет вариантов?
|
|||
10
Defender aka LINN
29.04.09
✎
11:30
|
(6) Ну и работай в MSSQL :)
|
|||
11
0xFFFFFF
29.04.09
✎
12:06
|
(10) Это спасибо конечно за разрешение. Но есть варианты в 1С?
|
|||
12
KAO111
29.04.09
✎
12:16
|
ВЫБРАТЬ
ПерваяТаб.А КАК А, ПерваяТаб.Б КАК Б, ВтораяТабОсн.С как С ИЗ ПерваяТаб ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтораяТабОсн ПО (ПерваяТаб.А = ВтораяТабОсн.А) И (ПерваяТаб.Б = ВтораяТабОсн.Б) ГДЕ ВтораяТабОсн.С В (ВЫБРАТЬ ПЕРВЫЕ 1 ВтораяТаб.С ИЗ ВтораяТаб ГДЕ (ВтораяТабОсн.С = ВтораяТаб.С) ) |
|||
13
0xFFFFFF
29.04.09
✎
12:18
|
Еще раз. Есть
ПерваяТаб А1 В1 D1 А2 В2 D2 ВтораяТаб А1 В1 С1 А1 В1 С2 А2 В2 С3 А2 В2 С4 А2 В2 С5 Как получить А1 В1 С1 (первое значение по А1, В1) А2 В2 С3 (первое значение по А2, В2) |
|||
14
AHgpuXa
29.04.09
✎
12:20
|
(12)Не подходит по условию.
(13) Левое соединение однозначно. |
|||
15
0xFFFFFF
29.04.09
✎
12:20
|
(12) О, проверю, похоже то что нужно.
ВтораяТабОсн.С В (ВЫБРАТЬ .... Спасибо. |
|||
16
0xFFFFFF
29.04.09
✎
12:22
|
(14)
Левое соединение (Выбрать первые 1 из ... ) ПО ... так чтоли? |
|||
17
AHgpuXa
29.04.09
✎
12:23
|
+(14)Не подходит по условию внутреннее соединение. Нужно левое.
А1 В1 D1 А2 В2 D2 А3 В2 D2 - Это не попадет. ВтораяТаб А1 В1 С1 А1 В1 С2 А2 В2 С3 А2 В2 С4 А2 В2 С5 |
|||
18
AHgpuXa
29.04.09
✎
12:36
|
можно попробывать так:
Выбрать ПерваяТаблица.А, ПерваяТаблица.Б, ВремТаблица.В ИЗ ПерваяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (Выбрать А,Б,Мин(В) В ИЗ ВтораяТаблица Сгруппировать по А,Б) как ВремТаблица ПО ((ПерваяТаблица.А = ВремТаблица.А) И (ПерваяТаблица.Б = ВремТаблица.Б)) |
|||
19
KAO111
29.04.09
✎
12:43
|
(18) в данном случае наверно оптимальнее, просто в (12) пример, что 1С умеет использовать коррелированные подзапросы в условии
|
|||
20
hhhh
29.04.09
✎
13:06
|
ВЫБРАТЬ
(8) легко ВЫБРАТЬ ПерваяТаб.А КАК А, ПерваяТаб.Б КАК Б, МАКСИМУМ(ВтораяТаб.С) ИЗ ПерваяТаб ЛЕВОЕ СОЕДИНЕНИЕ ВтораяТаб ПО (ПерваяТаб.А = ВтораяТаб.А) И (ПерваяТаб.Б = ВтораяТаб.Б) СГРУППИРОВАТЬ ПО ПерваяТаб.А, ПерваяТаб.Б |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |