|
Соединение таблиц по дате. Как??? | ☑ | ||
---|---|---|---|---|
0
suvolod
16.07.12
✎
18:10
|
Запросом сделал такую таблицу:
ВЫБРАТЬ НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) КАК ДатаДок, "РНК № " + РеализацияТоваровУслугТовары.Ссылка.Номер КАК ВидДок, РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент, РеализацияТоваровУслугТовары.Номенклатура, РеализацияТоваровУслугТовары.ХарактеристикаНоменклатуры ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары Как мне ее правильно соединить с регистром сведений ЦеныНоменклатуры в зависимости от даты документа? Т.е. мне нужно вот что: пусть у меня в запрос попало две записи: 14.07.12 "Ведро цинковое" "" 15.07.12 "Ведро цинковое" "" на 14 число закупочная цена была 300 руб; а на 15 - 400 руб. (ператор документом Установка цен номенклатуры завел новую цену закупа на 15 число). Тогда после соединения исходной таблицы с регистром цен у меня результат должен быть таким: 14.07.12 "Ведро цинковое" "" 300 15.07.12 "Ведро цинковое" "" 400 |
|||
1
Classic
16.07.12
✎
18:16
|
(0)
Геморно, если записи в РС не на каждый день. Соединяй со всей таблицей РС с условием РС.Период <= РеализацияТоваровУслугТовары.Ссылка.Дата а потом группируй |
|||
2
suvolod
16.07.12
✎
18:20
|
спасибо за наводку, попробую...
Хотя.. тоже геморно кажется. Может, есть способ соединить как-то проще? Фактически мне нужен срезпоследних по регистру ЦеныНоменклатуры. Но - на каждую строку исходной таблицы |
|||
3
Classic
16.07.12
✎
18:21
|
(2)
Отмечусь, потому что менее геморного способа такой достаточно распространенной задачи я не знаю. Может кто подскажет :) |
|||
4
AlexNew
16.07.12
✎
18:23
|
два левых соединения РС Цены с самим собой, чтобы второй вылетал за границы.
|
|||
5
suvolod
16.07.12
✎
18:26
|
а можно пример? смысла сей манипуляции догнать не могу
|
|||
6
Strogg
16.07.12
✎
18:28
|
А если цены собрать вложенным запросом с группировкой по периодам, а уж потом соединять?
|
|||
7
andrewks
16.07.12
✎
18:29
|
можно использовать коррелированный подзапрос
|
|||
8
Classic
16.07.12
✎
18:31
|
(7)
Если бы они были |
|||
9
Kashemir
16.07.12
✎
18:34
|
Здесь подобная задача v8: v8: SQL запрос - выбор строк с максимальной датой с корреляционными и без
|
|||
10
andrewks
16.07.12
✎
18:35
|
(8) а разве их нет?
|
|||
11
hohol
16.07.12
✎
18:38
|
сначало максимум по периоду, с той же таблицей регистра с объединением период и к этому таблицу документа с датой <= .
зы эти все виртуальные таблицы, только мировозрение одынэсника портят. |
|||
12
Classic
16.07.12
✎
18:38
|
(9)
В каком посте там корреляционный подзапрос? (10) Всегда был уверен, что нет. Но товарищ из (9) говорит, что есть |
|||
13
andrewks
16.07.12
✎
18:40
|
(12) тоже раньше думал, что в 1Ц их нет. но с пару недель назад в одной из веток глаза раскрыли
|
|||
14
Kashemir
16.07.12
✎
18:41
|
(12) в 10
|
|||
15
hohol
16.07.12
✎
18:41
|
+(11) в общем нужно одну и туже таблицу регистра объединить с собой по периоду.
Первая таблица с функцией максимум по периоду, объединяется с той же таблицей регистра по периоду. А потом объединяется с документом по условие дата <= |
|||
16
Classic
16.07.12
✎
18:44
|
(14)
Меня в 10 посте смущают конструкции Табличка КАК Табличка Непонятно, потом идет обращение к какой-то таблице базы данных или к результату запроса. Если к таблице базы данных, то это не коррелированный подзапрос В таком виде сработает? ВЫБРАТЬ Табличка.Ссылка, Табличка.СебестоимостьШтуки1, Табличка.Номенклатура, Табличка.Период ИЗ Табличка КАК ТабличкаВерхняя ГДЕ ТабличкаВерхняя.Период В (ВЫБРАТЬ МАКСИМУМ(МаксПериоды.Период) КАК Период ИЗ Табличка КАК МаксПериоды ГДЕ МаксПериоды.Ссылка = ТабличкаВерхняя.Ссылка И МаксПериоды.Номенклатура = ТабличкаВерхняя.Номенклатура) |
|||
17
Classic
16.07.12
✎
18:45
|
ВЫБРАТЬ
ТабличкаВерхняя.Ссылка, ТабличкаВерхняя.СебестоимостьШтуки1, ТабличкаВерхняя.Номенклатура, ТабличкаВерхняя.Период ИЗ Табличка КАК ТабличкаВерхняя ГДЕ ТабличкаВерхняя.Период В (ВЫБРАТЬ МАКСИМУМ(МаксПериоды.Период) КАК Период ИЗ Табличка КАК МаксПериоды ГДЕ МаксПериоды.Ссылка = ТабличкаВерхняя.Ссылка И МаксПериоды.Номенклатура = ТабличкаВерхняя.Номенклатура) |
|||
18
Kashemir
16.07.12
✎
18:45
|
(16) Сработает
|
|||
19
Classic
16.07.12
✎
18:46
|
(18)
Оставил в закладке. Завтра попробую на реальных таблицах посмотреть. Конечно в СрезПоследних врядли даст передать в качестве параметра, но все равно интересно |
|||
20
Kashemir
16.07.12
✎
18:47
|
(17) Табличка в данном случае является временной таблицей для упрощения понимания запроса. Можешь использовать любой желаемый источник. Срез последних не даст - можешь не пробовать :) Виртуальные таблицы нельзя использовать в корреляционных запросах
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |