|
Соединение таблиц в запросе | ☑ | ||
---|---|---|---|---|
0
tommi
20.04.15
✎
16:03
|
Есть справочник Номенклатуры и 3 таблицы с колонками : Склад,Ном-ра,КолВо. И такой запрос :
ВЫБРАТЬ ВыбНоменклатура.Номенклатура, ЕСТЬNULL(Буфер1.Склад, ЕСТЬNULL(Буфер2.Склад, Буфер3.Склад)) КАК Склад, Буфер1.Количество1, Буфер2.Количество2, Буфер3.Количество3 ИЗ ВыбНоменклатура КАК ВыбНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Буфер1 КАК Буфер1 ПОЛНОЕ СОЕДИНЕНИЕ Буфер3 КАК Буфер3 ПО Буфер1.Номенклатура = Буфер3.Номенклатура И Буфер1.Склад = Буфер3.Склад ПОЛНОЕ СОЕДИНЕНИЕ Буфер2 КАК Буфер2 ПО Буфер1.Номенклатура = Буфер2.Номенклатура И Буфер1.Склад = Буфер2.Склад ПО ВыбНоменклатура.Номенклатура = Буфер1.Номенклатура Если в Буфер1 нет ном-ры то и остальные таблицы не соединяются с этой ном-ой. |
|||
1
shuhard_серый
20.04.15
✎
16:04
|
(0) используй объединить все
|
|||
2
D_E_S_131
20.04.15
✎
16:06
|
А чего бы "левым соединением" не получать данные из таблиц "Буфер"?
|
|||
3
DrShad
20.04.15
✎
16:08
|
буферы соединить во вложенном запросе
|
|||
4
tommi
20.04.15
✎
16:09
|
нет мне надо что было так ,если
Ном-ра: Ном1 Ном2 Буфер1: Ном1 Скл1 К1 Буфер2: Ном1 Скл1 К2 Ном2 Скл2 К2 Буфер3: Ном1 Скл1 К3 Ном1 Скл3 К3 То получилось бы Ном1 Скл1 К1 К2 К3 Ном1 Скл2 - К2 - Ном1 Скл3 - - К3 "-" - null |
|||
5
tommi
20.04.15
✎
16:09
|
понятно что можно было во вложенном,но буферы слишком большие,а но-ра там несколько позиций,неоптимально
|
|||
6
tommi
20.04.15
✎
16:10
|
можно ли как то в одном так сказать соединении?
|
|||
7
DrShad
20.04.15
✎
16:12
|
соединяй каждый буфер с номенклатурой, а не между собой
|
|||
8
tommi
20.04.15
✎
16:13
|
тогда будут склады повторятся
Ном Скл1 К1 - - Ном Скл1 - К2 - |
|||
9
DrShad
20.04.15
✎
16:14
|
(8) с фига ли?
|
|||
10
DrShad
20.04.15
✎
16:15
|
ааааа, ну да будут
|
|||
11
DrShad
20.04.15
✎
16:15
|
ну тогда либо вложенный либо никак
|
|||
12
AntonH851
20.04.15
✎
16:16
|
Выбрать
Данные.Ном, Данные.Скл, СУММА(Данные.Кол1) КАК Кол1, СУММА(Данные.Кол2) КАК Кол2, СУММА(Данные.Кол3) КАК Кол4 ИЗ (Выбрать Ном, Скл, Кол Как Кол1, 0 Как Кол2, 0 Как Кол3 Из буффер1 объединить все Выбрать ном, скл, 0, Кол, 0 Из буффер2 Объединить все Выбрать ном, скл, 0, 0, Кол Из буффер3) КАК Данные Сгруппировать по Ном, скл |
|||
13
tommi
20.04.15
✎
16:18
|
тогда вылезут лишние ном-ры,можно конечно условие потом поставить.Но я так понимаю соединением никак?
|
|||
14
fishb1
20.04.15
✎
16:58
|
(13)
> Но я так понимаю соединением никак? Соединение не получится, потому что это задача на ОБЪЕДИНЕНИЕ :) > тогда вылезут лишние ном-ры,можно конечно условие потом поставить. Если сделать так, то не вылезут: ВЫБРАТЬ ВыбНоменклатура.Номенклатура КАК Номенклатура, Буфера.Склад КАК Склад, Буфера.К1, Буфера.К2, Буфера.К3 ИЗ ВыбНоменклатура КАК ВыбНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Буфера.Номенклатура КАК Номенклатура, Буфера.Склад КАК Склад, СУММА(Буфера.К1) КАК К1, СУММА(Буфера.К2) КАК К2, СУММА(Буфера.К3) КАК К3 ИЗ (ВЫБРАТЬ Буфер1.Номенклатура КАК Номенклатура, Буфер1.Склад КАК Склад, Буфер1.Количество КАК К1, 0 КАК К2, 0 КАК К3 ИЗ Буфер1 КАК Буфер1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Буфер2.Номенклатура, Буфер2.Склад, 0, Буфер2.Количество, 0 ИЗ Буфер2 КАК Буфер2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Буфер3.Номенклатура, Буфер3.Склад, 0, 0, Буфер3.Количество ИЗ Буфер3 КАК Буфер3) КАК Буфера СГРУППИРОВАТЬ ПО Буфера.Номенклатура, Буфера.Склад) КАК Буфера ПО ВыбНоменклатура.Номенклатура = Буфера.Номенклатура |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |