|
Помогите с запросом. | ☑ | ||
---|---|---|---|---|
0
H A D G E H O G s
21.05.13
✎
13:43
|
День добрый.
Стыдно признать, но не катит что то. Есть запрос вида: ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК СерияНоменклатуры ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО (СерииНоменклатуры.Владелец = Номенклатура.Ссылка) Он выдаст: Рожь Серия12092012 Рожь Серия18092012 Ячмень ПустаяСсылка Мне надо каждую номенклатуру дополнить пустой серией (ПустаяСсылка), например Рожь Серия12092012 Рожь Серия18092012 Рожь ПустаяСсылка Ячмень ПустаяСсылка |
|||
1
Shurjk2
21.05.13
✎
13:45
|
Не удивительно, почему ты решил что при левом соединении у тебя будут налы из левой таблицы?
|
|||
2
shuhard
21.05.13
✎
13:45
|
(0) объединить все
|
|||
3
Maxus43
21.05.13
✎
13:45
|
Объеденить ВСЁ
ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК СерияНоменклатуры всё во вложенный или ВТ, потом Группируй и упорядочить |
|||
4
Shurjk2
21.05.13
✎
13:45
|
Делай правое соединение тогда взлетит.
|
|||
5
H A D G E H O G s
21.05.13
✎
13:46
|
(3) Бррр., там стока условий на номенклатуру.
|
|||
6
mikecool
21.05.13
✎
13:47
|
"Шелдон, я знаю почему у тебя такие плохие результаты! Это все потому, что ты встречаешься с девушкой!" (с) ТБВ, Крипки
|
|||
7
H A D G E H O G s
21.05.13
✎
13:47
|
Еще одну ВТ запилить придется.
|
|||
8
H A D G E H O G s
21.05.13
✎
13:47
|
(4) Как это?
|
|||
9
Shurjk2
21.05.13
✎
13:48
|
(8) Просто в запросе поменяй слово левое на правое.
|
|||
10
Maxus43
21.05.13
✎
13:49
|
(5) в (0) не видно было условий) Самый простой способ с Объеденить. О чем товарисч (9) я тоже не въехал пока
|
|||
11
H A D G E H O G s
21.05.13
✎
13:50
|
(9) В Номенклатурах иногда не бывает Серий.
|
|||
12
Shurjk2
21.05.13
✎
13:51
|
(11) Так ты серии берешь из справочника серии, сейчас ты выбираешь все серии, а тебе надо выбрать все номенклатуры из справочника номенклатура.
|
|||
13
Рэйв
21.05.13
✎
13:51
|
Может так?
Выбрать* ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, СерииНоменклатуры.Ссылка СерияНоменклатуры ИЗ Справочник.Номенклатура КАК Номенклатура Правое СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО (СерииНоменклатуры.Владелец = Номенклатура.Ссылка) Объеденить ВСЁ ВЫБРАТЬ Номенклатура.Ссылка , ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) ИЗ Справочник.Номенклатура КАК Номенклатура) ВнЗапрос Сгруппировать По ВнЗапрос.Номенклатура, ВнЗапрос.СерияНоменклатуры Упроядочить По ВнЗапрос.Номенклатура, ВнЗапрос.СерияНоменклатуры |
|||
14
Maxus43
21.05.13
✎
13:51
|
(12) ему надо "каждую номенклатуру дополнить пустой серией (ПустаяСсылка)"
|
|||
15
Рэйв
21.05.13
✎
13:53
|
+ВСЁ наверное лишнее в объединении
|
|||
16
Shurjk2
21.05.13
✎
13:53
|
А нет, все таки таблица номенклатура слева, все должно работать.
|
|||
17
H A D G E H O G s
21.05.13
✎
13:53
|
(13) Бррр.
2 поиска по справочнику номенлактуры. Спасибо, не надо. Я лучше через ВТ, отсекая все лишнее предварительно. |
|||
18
Maxus43
21.05.13
✎
13:53
|
(15) не принципиально, или потеря производительности предполагается?) не слышал о таком
|
|||
19
Ёпрст
21.05.13
✎
13:54
|
тока ежели с юнионом, будет по несколько значений с нулом, группировать придётся еще
|
|||
20
H A D G E H O G s
21.05.13
✎
13:55
|
(19) Вместо
ОБЪЕДИНИТЬ ВСЕ написать ОБЪЕДИНИТЬ |
|||
21
Shurjk2
21.05.13
✎
13:56
|
А если просто добавить ВТ в которой пустые серии будут и с ней соеденить?
|
|||
22
Maxus43
21.05.13
✎
13:56
|
(20) что даст?
|
|||
23
H A D G E H O G s
21.05.13
✎
13:58
|
(22) Дублей не будет.
|
|||
24
chelentano
21.05.13
✎
13:59
|
(22) объединить все - выбирает все, объединить - только уникальные
|
|||
25
Ёпрст
21.05.13
✎
13:59
|
(23) потеряешь в скорости
|
|||
26
H A D G E H O G s
21.05.13
✎
13:59
|
(25) А как лучше?
|
|||
27
Ёпрст
21.05.13
✎
14:00
|
хотя неизвестно, что быстрее будет, сгруппировать(или дистиникт) потом, или просто объединить сразу
|
|||
28
Ёпрст
21.05.13
✎
14:00
|
(26) :) замерить надо.
|
|||
29
GANR
21.05.13
✎
14:00
|
(0) И в чем проблема??? Да ты, имхо, просто решил подкинуть форуму задачку для разминки мозга :)))). Не верю я, что H A D G E H O G s не справится с такой задачкой.
|
|||
30
H A D G E H O G s
21.05.13
✎
14:02
|
(29) Hadgehogs не хотел городить еще одну ВТ в уже целый зоопарк.
|
|||
31
Maxus43
21.05.13
✎
14:09
|
(30) может таки легче будет при обработке результата добавить? или только запрос?
|
|||
32
H A D G E H O G s
21.05.13
✎
14:10
|
(31) Это фильтр для последующих Виртуальных таблиц.
|
|||
33
Серго62
21.05.13
✎
14:29
|
(0) У меня вот это сработало:
ВЫБРАТЬ Номенклатура.Ссылка, ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК СерияНоменклатуры ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО (СерииНоменклатуры.Владелец = Номенклатура.Ссылка) ГДЕ НЕ Номенклатура.ЭтоГруппа |
|||
34
Серго62
21.05.13
✎
14:40
|
Если для каждой номенклатуры надо добавить запись с пустой серией то тогда вот так:
ВЫБРАТЬ РАЗЛИЧНЫЕ Запрос.Ссылка, Запрос.СерияНоменклатуры КАК СерияНоменклатуры ИЗ (ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка, ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК СерияНоменклатуры ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО (СерииНоменклатуры.Владелец = Номенклатура.Ссылка) ГДЕ НЕ Номенклатура.ЭтоГруппа ОБЪЕДИНИТЬ ВЫБРАТЬ Номенклатура.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ НЕ Номенклатура.ЭтоГруппа) КАК Запрос УПОРЯДОЧИТЬ ПО Запрос.Ссылка.Код, СерияНоменклатуры |
|||
35
zippygrill
21.05.13
✎
14:47
|
)))
|
|||
36
Speshuric
21.05.13
✎
15:03
|
(0)есть такой прием:
|
|||
37
Speshuric
21.05.13
✎
15:03
|
ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(СерииНоменклатуры.Ссылка, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК СерияНоменклатуры ИЗ Справочник.Номенклатура КАК Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК ВариантМультипликатора ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1) КАК Мультипликатор ПО (ИСТИНА) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СерииНоменклатуры КАК СерииНоменклатуры ПО (СерииНоменклатуры.Владелец = Номенклатура.Ссылка) И (Мультипликатор.ВариантМультипликатора = 0) |
|||
38
Speshuric
21.05.13
✎
15:04
|
Ой, ЛЕВОЕ СОЕДИНЕНИЕ заменить на ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|
|||
39
Speshuric
21.05.13
✎
15:06
|
Я тупой под вечер - ничего заменять не надо
|
|||
40
Очевидно
21.05.13
✎
15:08
|
(34) +1 , взлетит.
|
|||
41
Maxus43
21.05.13
✎
15:11
|
(40) это уже предлагали 3-4 раза, конечно взлетит
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |