|
Запрос | ☑ | ||
---|---|---|---|---|
0
impulse9
28.08.13
✎
05:25
|
Предположим, есть ТЗ с колонками:
Товар, Цена, Количество, Дата Как запросом получить ТЗ с теми же колонками, но отбору по самой последней дате? Запрос=Новый запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; МенеджерТаблицыДанных = Запрос.МенеджерВременныхТаблиц; Запрос.Текст="ВЫБРАТЬ | ТЗ.Дата, | ТЗ.Количество, | ТЗ.Цена, | ТЗ.Товар |ПОМЕСТИТЬ ТаблицаДанных |ИЗ | &ТЗ КАК ТЗ"; Запрос.УстановитьПараметр("ТЗ",ВходящаяТаблица); Запрос.Выполнить(); ЗапросКбазеДанных = Новый Запрос; ЗапросКбазеДанных.МенеджерВременныхТаблиц = МенеджерТаблицыДанных; ЗапросКбазеДанных.Текст = ????? |
|||
1
impulse9
28.08.13
✎
05:29
|
Например, входящие данные:
Булка 60 1 11.01.13 Булка 15 1 10.01.13 Вилка 10 1 11.01.13 Вилка 15 1 12.01.13 Исходящие данные должны быть: Булка 60 1 11.01.13 Вилка 15 1 12.01.13 |
|||
2
Rie
28.08.13
✎
05:31
|
(0) Сначала сгруппировать по первым трём колонкам и получить МАКСИМУМ от даты.
А затем - соединить с исходной таблицей по дате (ну и, наверное, товару? или что там для Вас важно). |
|||
3
Rie
28.08.13
✎
05:35
|
+(2) Конечно, не по трём - а по товару (или что там для Вас важно).
|
|||
4
impulse9
28.08.13
✎
05:35
|
(2) А другого способа нет?
Поясню: в моем случае входящие данные - это не ТЗ, а результат запроса, и хотелось бы просто доработать сам запрос, а не выгружать его в ТЗ и обрабатывать. |
|||
5
Гефест
28.08.13
✎
05:38
|
Это в запросе и делается
|
|||
6
impulse9
28.08.13
✎
05:42
|
(5) Поясняю: Запрос выполняется около 10 минут. Чтобы получить нужные данные по схеме (2), надо выполнить запрос 2 раза, т.е. потратить 20 минут. Или выгрузить в ТЗ и еще одним запросом получить нужные данные за 1 секунду.... но это будет уже 2й запрос, и будет некрасиво
|
|||
7
Rie
28.08.13
✎
05:45
|
(4) Именно в запросе.
Запрос.Текст= "ВЫБРАТЬ | ТЗ.Дата, | ТЗ.Количество, | ТЗ.Цена, | ТЗ.Товар |ПОМЕСТИТЬ ТаблицаДанных |ИЗ | &ТЗ КАК ТЗ; // это был Ваш запрос |ВЫБРАТЬ | Товар |, МАКСИМУМ(Дата) |ИЗ | ТаблицаДанных |ПОМЕСТИТЬ ПоследниеДаты; |ВЫБРАТЬ | ТаблицаДанных.Товар |, ТаблицаДанных.Цена |, ТаблицаДанных.Количество |ИЗ | ТаблицаДанных | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеДаты | ПО ТаблицаДанных.Товар = ПоследниеДаты.Товар | И ТаблицаДанных.Дата = ПоследниеДаты.Дата"; |
|||
8
Rie
28.08.13
✎
05:45
|
+(7) Всё - в одном запросе.
|
|||
9
impulse9
28.08.13
✎
05:51
|
(8) Возможно, мне не удалось объяснить свою мысль.
В любом случае, Ваше решение рабочее и меня пока устраивает =) Спасибо |
|||
10
Rie
28.08.13
✎
05:52
|
(9) Насчёт эффективности? Не беспокойтесь. Это - максимально эффективно.
|
|||
11
Wobland
28.08.13
✎
05:54
|
(10) ты ж не знаешь, насколько эффективным путём он пришёл к этой своей ТЗ ;)
|
|||
12
Rie
28.08.13
✎
05:57
|
(11) "Ну, с моей стороны пули вылетели. Значит, проблема - у вас" (c) старый анекдот об админах
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |