|
Запрос ... никак не пойму как скрестить две таблицы | ☑ | ||
---|---|---|---|---|
0
ValeriTim
10.09.13
✎
16:51
|
Предположим есть два запроса:
1. выбираем ссылки на справочник номенклатуры по предопределенному списку ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК СпрНоменклатура ГДЕ СпрНоменклатура.Ссылка В (&МассивНоменклатуры) 2. Выбираем плановые значения количества из регистра ВЫБРАТЬ РегПлан.Номенклатура, РегПлан.ПроцентСкидкиНаценки ИЗ РегистрСведений.План.СрезПоследних( &Дата, (Номенклатура В (&МассивНоменклатуры) ИЛИ Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) И Показатель В (&МассивПоказателей)) КАК РегПлан Первая таблица вернет: 1.1. Ном1 1.2. Ном2 1.3. Ном3 Вторая таблица вернет: 2.1. ____ 15 /____/ - это пустое значение измерения Номенклатура 2.2. Ном2 23 2.3. Ном3 10 А вот теперь надо получить результирующую таблицу: 3.1. Ном1 15 3.2. Ном2 23 3.3. Ном3 15 Проблема в том, что надо взять план из 2.1 в том случае, если не нашли самой номенклатуры во второй таблице, а для найденной взять максимальное значение между 2.1 и 2.3 |
|||
1
Maxus43
10.09.13
✎
16:56
|
соеденить по таблица1.Номенклатура = таблица2.Номенклатура ИЛИ таблица2.Номенклатура = &ПустаяСсылка
|
|||
2
Infsams654
10.09.13
✎
16:57
|
(0) что мешает соединить ?
|
|||
3
ValeriTim
10.09.13
✎
16:57
|
(1) а как максимум выбрать ? Кстати сейчас попробую ...
|
|||
4
ValeriTim
10.09.13
✎
16:58
|
(2) да вот никак не пойму как ...
|
|||
5
mistеr
10.09.13
✎
16:59
|
(1) + МАКСИМУМ
|
|||
6
mistеr
10.09.13
✎
16:59
|
(5) + СГРУППИРОВАТЬ ПО таблица1.Номенклатура
|
|||
7
АНДР
10.09.13
✎
17:01
|
Как-то так... Если я правильно понял условие " максимальное значение между 2.1 и 2.3"
Step 1 Select Max(РегПлан.ПроцентСкидкиНаценки) From РегистрСведений.План.СрезПоследних(.... РегПлан Where РегПлан.Номенклатура is Null Step 2 Select СпрНоменклатура.Ссылка Case When MaxStep1 < РегПлан.ПроцентСкидкиНаценки Then РегПлан.ПроцентСкидкиНаценки Else MaxStep1 end СпрНоменклатура From Справочник.Номенклатура СпрНоменклатура Join РегистрСведений.План.СрезПоследних(.... СпрНоменклатура РегПлан on ... Where ... |
|||
8
Maxus43
10.09.13
✎
17:02
|
МАКСИМУМ наверно не прокатит, Выбор Когда юзать придётся
|
|||
9
ValeriTim
10.09.13
✎
17:11
|
(1) Попррбовал - не соединяется. Когда во второй таблице не находит номенклатуру значения плана остается пустым
|
|||
10
Maxus43
10.09.13
✎
17:16
|
запрос в студию
|
|||
11
Enders
10.09.13
✎
17:17
|
получили первые две таблицы. Далее
Выбрать НоменклатураТ1, Количесто(Различные НоменклатураТ2) как НоменклатураТ2, Максимум(КоличествоТ2) Из Т1 как Т1 Левое Соединение Т2 как Т2 по т1.НаименованиеТ1 = т2.НаименованиеТ2 Или Т2 = Значение(Справочник.Номенклатура.ПустаяСсылка) Сгрупировать По Т1.НоменклатураТ1 Наверное как-то так) |
|||
12
Enders
10.09.13
✎
17:18
|
или Т2.НоменклатураТ2 = Значение(Справочник.Номенклатура.ПустаяСсылка)
Опечатался) |
|||
13
ValeriTim
10.09.13
✎
17:22
|
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура, РегПлан.Номенклатура КАК ПланНоменклатура, // это просто чтобы посмотреть что выбирается РегПлан.ПроцентСкидкиНаценки ИЗ Справочник.Номенклатура КАК СпрНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.План.СрезПоследних( &Дата, (Номенклатура В (&МассивНоменклатуры) ИЛИ Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) И ПолучательСкидки В (&МассивПолучателей)) КАК РегПлан ПО (РегПлан.Номенклатура.Ссылка = СпрНоменклатура.Ссылка) ИЛИ (РегПлан.Номенклатура.Ссылка = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) ГДЕ СпрНоменклатура.Ссылка В (&МассивНоменклатуры) |
|||
14
ValeriTim
10.09.13
✎
17:23
|
Похоже здесь действительно через временные таблицы делать надо ...
|
|||
15
Maxus43
10.09.13
✎
17:24
|
ПО (РегПлан.Номенклатура.Ссылка = СпрНоменклатура.Ссылка) ИЛИ (РегПлан.Номенклатура!!!!!!!!.Ссылка!!!!убрать!! = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
|
|||
16
Maxus43
10.09.13
✎
17:24
|
ИЛИ (РегПлан.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
а вобще в массив номенклатур добавь пустую ссылку. ИЛИ - плохо для запросов бывает |
|||
17
Тролль главный
10.09.13
✎
17:25
|
соедини по равенству ссылок или ссылка 2-й таблицы пустая
сгруппируй и возьми максимум |
|||
18
ValeriTim
10.09.13
✎
17:31
|
(16) Ты прав. Только вот максимум не выходит ... (не буду весь запрос опять посылать)
МАКСИМУМ(РегПлан.ПроцентСкидкиНаценки) СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка, РегПлан.ПроцентСкидкиНаценки |
|||
19
ValeriTim
10.09.13
✎
17:32
|
Сам дурак. сделал
СГРУППИРОВАТЬ ПО СпрНоменклатура.Ссылка |
|||
20
Maxus43
10.09.13
✎
17:33
|
вот
|
|||
21
Рэйв
10.09.13
✎
17:33
|
Автора еще никто на СП и мануалы не посылал? Думаю стоит
|
|||
22
Maxus43
10.09.13
✎
17:35
|
(21) боюсь там не написано что РегПлан.Номенклатура.Ссылка = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка всегда Ложь
|
|||
23
ValeriTim
10.09.13
✎
17:36
|
(21) Ну вот был же нормальный диалог с нормальными людьми ... и тут ты ...
|
|||
24
Рэйв
10.09.13
✎
17:37
|
(22)тогда на годик..ну как минимум..попрактиковаться. чтобы читать чужо код и понимать его. Я думаю хватит.
|
|||
25
Рэйв
10.09.13
✎
17:38
|
(23)Да ладно:-)Может я внесу СВЕЖУЮ СТРУЮ :-)
\ |
|||
26
hhhh
10.09.13
✎
18:00
|
(23) недавно вот была тема, там автор даже три таблицы скрестил. Еще и регФакт у него был. Называется типа "очень сложный запрос".
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |