|
Запрос СОЕДИНЕНИЕ (брать только одну запись с правой таблицы) | ☑ | ||
---|---|---|---|---|
0
MistaEr
21.01.16
✎
11:25
|
Нужно выбрать договора контрагентов с наибольшей датой. Нельзя использовать ВТ, все это нужно для динамического списка.
ВЫБРАТЬ ВложенныйЗапрос.Владелец, ВложенныйЗапрос1.Ссылка ИЗ (ВЫБРАТЬ ДоговорыКонтрагентов.Владелец КАК Владелец, МАКСИМУМ(ДоговорыКонтрагентов.Дата) КАК Дата ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.Дата <> &ПустаяДата СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.Владелец) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДоговорыКонтрагентов.Ссылка КАК Ссылка, ДоговорыКонтрагентов.Владелец КАК Владелец, ДоговорыКонтрагентов.Дата КАК Дата ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов) КАК ВложенныйЗапрос1 ПО ВложенныйЗапрос.Владелец = ВложенныйЗапрос1.Владелец И ВложенныйЗапрос.Дата = ВложенныйЗапрос1.Дата Вроде бы работает, но если у одного контрагента 2 договора с одинаковой датой, выводит по контрагенту 2 строчки. |
|||
1
mehfk
21.01.16
✎
11:27
|
ВЫБРАТЬ
ВложенныйЗапрос.Владелец, МАКСИМУМ(ВложенныйЗапрос1.Ссылка) ИЗ (ВЫБРАТЬ ДоговорыКонтрагентов.Владелец КАК Владелец, МАКСИМУМ(ДоговорыКонтрагентов.Дата) КАК Дата ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.Дата <> &ПустаяДата СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.Владелец) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДоговорыКонтрагентов.Ссылка КАК Ссылка, ДоговорыКонтрагентов.Владелец КАК Владелец, ДоговорыКонтрагентов.Дата КАК Дата ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов) КАК ВложенныйЗапрос1 ПО ВложенныйЗапрос.Владелец = ВложенныйЗапрос1.Владелец И ВложенныйЗапрос.Дата = ВложенныйЗапрос1.Дата СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Владелец |
|||
2
MistaEr
21.01.16
✎
11:33
|
ВЫБРАТЬ
ДоговорыКонтрагентов.Владелец, МАКСИМУМ(ДоговорыКонтрагентов.Дата) КАК Дата, МАКСИМУМ(ДоговорыКонтрагентов.Ссылка) КАК Ссылка ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ГДЕ ДоговорыКонтрагентов.Дата <> &ПустаяДата СГРУППИРОВАТЬ ПО ДоговорыКонтрагентов.Владелец |
|||
3
MistaEr
21.01.16
✎
11:34
|
(1) а так может задвоиться? в моем тесте получается очень даже хорошо и конечно быстрее
|
|||
4
mehfk
21.01.16
✎
11:38
|
(3) В параллельной вселенной, где запросы SQL работают не так, как в нашей - возможно.
|
|||
5
asady
21.01.16
✎
11:39
|
(0) а какой тогда договор выводить если их на самом деле 2 с одной и той же датой?
|
|||
6
Mort
21.01.16
✎
11:42
|
(2) Не взлетит, будет вообще левый договор. Нужно сначала сделать операцию с датой, а потом повторить такой же фокус с сылкой. Т.е. еще одно соединение но с датами, сгруппированными по максимуму ссылок.
|
|||
7
MistaEr
21.01.16
✎
11:46
|
(5) Можно любой, но хотелось бы с большим кодом, т.е. созданный позже
|
|||
8
MistaEr
21.01.16
✎
11:46
|
(6) Т.е. лучше сделать (1) , а не (2) ? По скорости конечно уступает....
|
|||
9
MistaEr
21.01.16
✎
13:09
|
(8)
|
|||
10
mehfk
21.01.16
✎
13:11
|
||||
11
MistaEr
21.01.16
✎
13:27
|
(10) Не нашел. Оставлю (2), дальше видно будет
|
|||
12
mistеr
21.01.16
✎
13:32
|
(7) В вашей вселенной нет реквизита ОсновнойДоговор?
|
|||
13
MistaEr
21.01.16
✎
13:37
|
(12) Основной не нужен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |