|
Объединение двух запросов по одному полю | ☑ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
0
adanedhell
06.02.15
✎
11:37
|
Добрый день форумчане! Уже два дня пытаюсь объединить запросы, искал по форумам, но не нашел похожей проблемы.
Суть в чем, имеется два запроса: ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул {ВЫБРАТЬ НоменклатураАртикул, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена1} ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен.Ссылка = &ТипЦен ОБЪЕДИНИТЬ ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул {ВЫБРАТЬ НоменклатураАртикул, (ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена2} ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних ГДЕ ЦеныНоменклатурыСрезПоследних.ТипЦен.Ссылка = &ТипЦен2 Параметры устанавливаются и затем выводится таблица: НоменклатураАртикул Цена1 Цена2 zzz 128 zzz 555 xxx 16 xxx 23 yyy 12 yyy 63 Цель стоит в объединении запросов по артикулу: НоменклатураАртикул Цена1 Цена2 zzz 128 555 xxx 16 23 yyy 12 63 Вопрос к знатокам, как это сделать? |
||||||||||
1
Рэйв
06.02.15
✎
11:46
|
помоему ты путаешь объединение и соединение
|
||||||||||
2
Рэйв
06.02.15
✎
11:47
|
"по ортикулу" какбэ на это намекает
|
||||||||||
3
Cube
06.02.15
✎
11:47
|
ВЫБРАТЬ
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Цена1.Номенклатура.Артикул, ЦеныНоменклатурыСрезПоследних_Цена2.Номенклатура.Артикул) КАК НоменклатураАртикул {ВЫБРАТЬ НоменклатураАртикул, ЦеныНоменклатурыСрезПоследних_Цена1.Цена КАК Цена1, ЦеныНоменклатурыСрезПоследних_Цена2.Цена КАК Цена2} ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен1) КАК ЦеныНоменклатурыСрезПоследних_Цена1 ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен2) КАК ЦеныНоменклатурыСрезПоследних_Цена2 ПО ЦеныНоменклатурыСрезПоследних_Цена1.Номенклатура.Артикул = ЦеныНоменклатурыСрезПоследних_Цена2.Номенклатура.Артикул |
||||||||||
4
adanedhell
06.02.15
✎
11:57
|
(3) Вы ШИКАРНЫ, спасибо помогло. Буду медитировать над кодом, пока не пойму, что к чему))
|
||||||||||
5
Cube
06.02.15
✎
12:06
|
(4) Ну, по хорошему нужно цены тоже обернуть в ЕстьNULL()...
Вот так: ВЫБРАТЬ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Цена1.Номенклатура.Артикул, ЦеныНоменклатурыСрезПоследних_Цена2.Номенклатура.Артикул) КАК НоменклатураАртикул {ВЫБРАТЬ НоменклатураАртикул, (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Цена1.Цена, 0)) КАК Цена1, (ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних_Цена2.Цена, 0)) КАК Цена2} ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен1) КАК ЦеныНоменклатурыСрезПоследних_Цена1 ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ТипЦен = &ТипЦен2) КАК ЦеныНоменклатурыСрезПоследних_Цена2 ПО ЦеныНоменклатурыСрезПоследних_Цена1.Номенклатура.Артикул = ЦеныНоменклатурыСрезПоследних_Цена2.Номенклатура.Артикул |
||||||||||
6
shuhard
06.02.15
✎
12:20
|
(0) и туп безнадёжно
Автор туп и не умеет пользоваться консолью отчетов |
||||||||||
7
Мыш
06.02.15
✎
12:27
|
Автор, пойми ключевую разницу между ОБЪЕДИНЕНИЕ И СОЕДИНЕНИЕ.
ОБЪЕДИНЕНИЕ это когда строки исходных таблиц просто выводятся вместе, друг за другом, сверху вниз. Типа сложили вертикально. СОЕДИНЕНИЕ это когда строки таблиц присоединяются слева или справа по какому-нибудь условию. Складываем горизонтально ) Щас поможем |
||||||||||
8
sapphire
06.02.15
✎
12:39
|
(0)
1. Надо решать задачу как она поставлена. 2. Почитайте про запросы и БД вообще, например Бен-Гана. Иногда помогает. 3. Старайтесь избегать "многоточий" в полях запроса, например, не нужно выделять артикул из номенклатуры. |
||||||||||
9
ДемонМаксвелла
06.02.15
✎
12:51
|
и чего, никто до сих пор не сказал про группировку?
|
||||||||||
10
Крошка Ру
06.02.15
✎
12:52
|
(5) Чтойта я по поводу полного соединения двух срезов последних сомневаюсь. В смысле производительности.
Может просто сгруппировать строки из (0)? |
||||||||||
11
ДемонМаксвелла
06.02.15
✎
12:53
|
(10) во-во
|
||||||||||
12
Cube
06.02.15
✎
12:55
|
(10) (11) Вместо тысячи слов... замер производительность и приходи с результатами... А так - просто пук в лужу.
|
||||||||||
13
AlexTim03
06.02.15
✎
12:57
|
(0) через объединение это делается так
поле1 значение1 0 объединить все поле2 0 значение 2 далее оборачиваешь это и делаешь group by по первой колонке и суммируешь (ну или максимум) по последующим колонкам. На выходе и будет твой вариант: zzz 128 555 xxx 16 23 yyy 12 63 |
||||||||||
14
ДемонМаксвелла
06.02.15
✎
12:58
|
(12) это как раз тот случай, когда мерять не надо и результат очевиден заранее.
|
||||||||||
15
Cube
06.02.15
✎
13:00
|
(14) Не убедил.
|
||||||||||
16
Крошка Ру
06.02.15
✎
13:01
|
(12) Да у нас на двоих два десятка слов. Где ж ты тысячу насчитал? А два десятка слов заведомо меньше, чем замер производительности. Так что довольствуйся моим пуком.
|
||||||||||
17
ДемонМаксвелла
06.02.15
✎
13:01
|
(15) да мне как-то пофиг, делай своим клиентам и работодателям как хочешь
|
||||||||||
18
Cube
06.02.15
✎
13:03
|
(16) (17) Губки надули, когда писали? А зря...
|
||||||||||
19
Крошка Ру
06.02.15
✎
13:05
|
(15) " - Я тебе н..уя не верю.
- А я тебя н..уя и не убеждаю. Это факт!" (с) Snatch |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |