|
Подскажите с запросом, пожалуйста! | ☑ | ||
---|---|---|---|---|
0
yabes
19.11.12
✎
23:27
|
Здравствуйте! Подскажите, а то я уже голову сломал. Возьмем, к примеру, документы "Счет на оплату покупателю". Счета выставляются разным контрагентам. Как написать запрос, чтобы получить список счетов, в котором по каждому контрагенту выбран один самый новый документ?
|
|||
1
XLife
19.11.12
✎
23:28
|
максимум по дате с группировкой по контрагенту
|
|||
2
КошерныйТролль
19.11.12
✎
23:29
|
максимум(документ)
|
|||
3
КошерныйТролль
19.11.12
✎
23:31
|
(1) максимум по дате вернет максимум даты а не документ
|
|||
4
XLife
19.11.12
✎
23:32
|
(3) а максимум по документу введенному задним числом что вернет?
|
|||
5
КошерныйТролль
19.11.12
✎
23:34
|
(4) а каким образом (1) решает вопрос?
|
|||
6
КошерныйТролль
19.11.12
✎
23:37
|
кстати, никогда не видел чтобы счета на оплату вводились задним числом )
|
|||
7
XLife
19.11.12
✎
23:38
|
(6) не умничай ашот, тебе не идет
|
|||
8
yabes
19.11.12
✎
23:40
|
(2),(1). И правда, в одном случае максимум даты, во втором проблемы возникнут, если документ задним числом ввести! Так Как быть? (6) Счет на оплату - это пример. Могут быть и другие документы!
|
|||
9
yabes
19.11.12
✎
23:44
|
А если Сделать пакетный запрос. В первом получить таблицу: Контрагент, самая последняя дата и соединить с таблицей Счет на оплату по контрагенту и дате! Только вместо даты использовать Момент времени, чтобы документов с одним моментом не было! Получится?
|
|||
10
КошерныйТролль
19.11.12
✎
23:44
|
(8) а каким образом просто максимум по дате даст ему последний документ?
|
|||
11
КошерныйТролль
19.11.12
✎
23:48
|
(9) а если в пределах даты момента времени был введен документ задним числом? Так , как предлагаешь ты, не решается ситуация, что два счета выписаны в одну и ту же секунду.
|
|||
12
КошерныйТролль
19.11.12
✎
23:50
|
имхо, тс интересует последний введенный документ максимум(док) эту задачу решает
|
|||
13
yabes
19.11.12
✎
23:53
|
(12) Максимум(Док) найдет тебе максимальную ссылку! К примеру, если я введу новый документ и укажу ему прошлый год, то у него будет максимальная ссылка и запрос покажет его!
|
|||
14
XLife
19.11.12
✎
23:55
|
(13) сделай сначала максимум по дате, а потом от него еще и максимум по ссылке
|
|||
15
yabes
19.11.12
✎
23:56
|
(14) Что и есть Максимум по моменту времени!))) Момент времени - это дата + ссылка
|
|||
16
alexei366
19.11.12
✎
23:58
|
Сортировка по дате,и Выбрать различные
|
|||
17
ssh2012
20.11.12
✎
00:10
|
Вариант:
ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, ЗаказПокупателя.Ссылка КАК Заказ ПОМЕСТИТЬ Таб ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателя ПО (ЗаказПокупателя.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 ЗаказПокупателя.Ссылка КАК Ссылка ИЗ Документ.ЗаказПокупателя КАК ЗаказПокупателя ГДЕ ЗаказПокупателя.Контрагент = Контрагенты.Ссылка УПОРЯДОЧИТЬ ПО ЗаказПокупателя.Дата УБЫВ, Ссылка УБЫВ)) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Таб.Контрагент, Таб.Заказ ИЗ Таб КАК Таб ГДЕ Таб.Заказ ЕСТЬ НЕ NULL |
|||
18
25-11
20.11.12
✎
00:11
|
1-ый запрос: максимум даты с группировкой по контрагенту
2-ой запрос: соединение с исходной таблицей (контрагент, документ, дата) по двум полям: контрагент и дата. Можно, ессно, и в одном запросе. |
|||
19
КошерныйТролль
20.11.12
✎
00:37
|
можно обойтись без пакета запросов
|
|||
20
КошерныйТролль
20.11.12
✎
00:40
|
и без выбрать первые. Достаточно одного соединения.
|
|||
21
КошерныйТролль
20.11.12
✎
00:44
|
соединение надо писать по функции максимум(документ) и по дата. Намерена туда запихивать условие в виде вложенного запроса?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |