|
Группировка объединения запросов | ☑ | ||
---|---|---|---|---|
0
suvolod
30.05.12
✎
14:17
|
Взял два регистра сведений: ЦеныАТТ и ЦеныНоменклатуры.
Объединяю их вот таким запросом: ВЫБРАТЬ ЦеныАТТСрезПоследних.Номенклатура КАК Номенклатура, ЦеныАТТСрезПоследних.Цена КАК ЦенаАТТ, ЦеныАТТСрезПоследних.Склад КАК СкладАТТ, 0 КАК ЦенаРозничная ПОМЕСТИТЬ ВремТаб ИЗ РегистрСведений.ЦеныАТТ.СрезПоследних КАК ЦеныАТТСрезПоследних ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, 0, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка), ЦеныНоменклатурыСрезПоследних.Цена ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &Розничные) КАК ЦеныНоменклатурыСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВремТаб.Номенклатура, ВремТаб.ЦенаРозничная КАК ЦенаРозничная, ВремТаб.ЦенаАТТ КАК ЦенаАТТ, ВремТаб.СкладАТТ КАК СкладАТТ ИЗ ВремТаб КАК ВремТаб Не могу понять, как мне потом их свернуть в полученной времтаб... На выходе мне нужна табличка ------------------ Номенклатура, ЦенаАТТ, ЦенаРозничная - и сгруппировать каждую такую строку в разрезе складов. ------------------ Из-за этих самых складов (точнее, их отсутствия в РС ЦеныНоменклатуры), свернуть по складам не получается. Возможно, здесь вообще объединение не нужно, но как тогда сделать правильно? |
|||
1
Wobland
30.05.12
✎
14:19
|
(0) соединяй
|
|||
2
suvolod
30.05.12
✎
14:21
|
чтобы соединять, тогда надо будет добавлять в запрос справочник номенклатура. А я не хотел этого делать (мне нужна только та номенклатура, по которой есть либо ЦенаАТТ, либо Розничная). Можно, конечно, потом отсеить пустые записи через ГДЕ... но разве проще способа нет?
|
|||
3
Wobland
30.05.12
✎
14:22
|
(2) ну сам же всё знаешь ;)
|
|||
4
bodri
30.05.12
✎
14:23
|
вложенный запрос
|
|||
5
suvolod
30.05.12
✎
14:24
|
А вложенным как?
|
|||
6
shuhard
30.05.12
✎
14:26
|
(5) прям так окаймить скобками и сгруппировать
|
|||
7
suvolod
30.05.12
✎
14:28
|
это понятно, я смысла не понимаю.... фактически то-же самое будет, что и через ВремТаб, просто без создания этой самой времтаб. Т.е. цеплять третью таблицу (справочник номенклатура) и убирать лишние записи через ГДЕ все-равно придется.
|
|||
8
Maxus43
30.05.12
✎
14:28
|
(2) зачем справочник номенклатура? Полное соединение
|
|||
9
ilya_i
30.05.12
✎
14:29
|
а может внешнее соединение
|
|||
10
suvolod
30.05.12
✎
14:30
|
не догоняю.. но сейчас попробую. может озарит :)
|
|||
11
shuhard
30.05.12
✎
14:31
|
(7) окстись
|
|||
12
Maxus43
30.05.12
✎
14:31
|
ВЫБРАТЬ
ЕСТЬNULL(ЦеныАТТ.Номенклатура, ЦеныНоменклатуры.Номенклатура) КАК Номенклатура, ЦеныАТТ.Цена КАК ЦенаАТТ, ЦеныНоменклатуры.Цена КАК ЦенаРозничная ИЗ РегистрСведений.ЦеныАТТ КАК ЦеныАТТ ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ЦеныАТТ.Номенклатура = ЦеныНоменклатуры.Номенклатура всякие срезы и т.д. сам прикрутишь |
|||
13
Maxus43
30.05.12
✎
14:35
|
(9) Ключевое слова ВНЕШНЕЕ можно не указывать вообще, оно повышает наглядность и удобочитаемость текста запроса (с)
|
|||
14
suvolod
30.05.12
✎
14:37
|
(12) Спасибо :)! Чтобы все понять, мне не хватало вот этой строчки:
ЕСТЬNULL(ЦеныАТТ.Номенклатура, ЦеныНоменклатуры.Номенклатура) КАК Номенклатура, вроде и просто, и логично, а сам догнать не смог. В голове только два левых соединения к к справочнику номенклатуры мысли были, с дальнейшим отбором по ГДЕ. Еще раз спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |