|
Как объединить три таблицы в одну с добавлением колонок всех трех | ☑ | ||
---|---|---|---|---|
0
PCcomCat
17.08.15
✎
17:04
|
Доброго времени, уважаемые!
Есть три запроса: |ВЫБРАТЬ | Док1.Ссылка.Док КАК Ссылка, | Док1.Контрагент КАК Контрагент, | Док1.ЗаявкаНаЗамер //Ссылка на документ |ИЗ | Документ.Док1 КАК Док1 ; |ВЫБРАТЬ | Док2.Ссылка.Док КАК Ссылка, | Док2.Контрагент КАК Контрагент, | Док2.ЗаявкаНаДоставку //Ссылка на документ |ИЗ | Документ.Док2 КАК Док2 ; |ВЫБРАТЬ | Док3.Ссылка.Док КАК Ссылка, | Док3.Контрагент КАК Контрагент, | Док3.ЗаявкаНаМонтаж //Ссылка на документ |ИЗ | Документ.Док3 КАК Док3 Хочу получить таблицу вида: "Ссылка, Контрагент, ЗаявкаНаЗамер, ЗаявкаНаДоставку, ЗаявкаНаМонтаж" с объединением по "Ссылка, Контрагент", но не могу - туплю. Подскажите, возможно ли такое, и если да, то как? |
|||
1
ДенисЧ
17.08.15
✎
17:05
|
полное соединение
|
|||
2
18_plus
17.08.15
✎
17:07
|
левое соединение
|
|||
3
PCcomCat
17.08.15
✎
17:21
|
Кого с кем соединять?
|
|||
4
ДенисЧ
17.08.15
✎
17:21
|
(3) Вопрос прямо из бронхов....
А не таблицы ли надо соединять? |
|||
5
PCcomCat
17.08.15
✎
17:25
|
(4) Про таблицы, как ни странно, я догадалась. Только хрень получается, почему-то.
ПОЛНОЕ СОЕДИНЕНИЕ Док1 и Док2 по Ссылка И Контрагент ПОЛНОЕ СОЕДИНЕНИЕ Док1 и Док3 по Ссылка И Контрагент |
|||
6
ДенисЧ
17.08.15
✎
17:26
|
(5) и что не получается?
|
|||
7
zak555
17.08.15
✎
17:26
|
(5) зачем тебе контрагент ?
|
|||
8
18_plus
17.08.15
✎
17:29
|
(5) хрень потому, что по ссылке на док ничего не соединится. лепить надо только по контрагенту
|
|||
9
PCcomCat
17.08.15
✎
17:30
|
(7) Контрагент может быть как разным, так и одинаковым. И если контрагент одинаков, то нужно собрать все данные в одну строку.
|
|||
10
18_plus
17.08.15
✎
17:30
|
походу я не прав, а что за документ скрывается под Док3.Ссылка.Док
|
|||
11
PCcomCat
17.08.15
✎
17:31
|
(8) Чего это? Ссылка может быть на один и тот же документ заказа покупателя.
|
|||
12
PCcomCat
17.08.15
✎
17:34
|
(6) Получаю строки с пустыми Ссылка и Контрагент для второй и третьей таблицы и заполненные строки для первой. Но ничего не сворачивается. Что-то делаю не так, но не пойму что.
|
|||
13
18_plus
17.08.15
✎
17:34
|
(11) тогда должно работать. а что не так с результатом? ну и текст запроса надо бы показать.
|
|||
14
Nuobu
17.08.15
✎
17:37
|
(0) Ничего не получится.
|
|||
15
Nuobu
17.08.15
✎
17:37
|
(0) Нужно в каждой таблице сделать номер строки и соединять по нему.
|
|||
16
Nuobu
17.08.15
✎
17:38
|
Что-то типа:
Док1.Ссылка.Док КАК Ссылка, Док1.Контрагент КАК Контрагент, Док1.ЗаявкаНаЗамер//Ссылка на документ Количество( Док1.ЗаявкаНаЗамер) КАК Номер Строки |
|||
17
18_plus
17.08.15
✎
17:38
|
(16) ты несёшь что-то типа херни.
|
|||
18
Nuobu
17.08.15
✎
17:38
|
А в результирующем запросе написать в номере строки
ЕстьNull(Табл1.НомерСтроки, ЕстьNull(Табл2.НомерСтроки, Табл3.НомерСтроки)) КАК НомерСтроки |
|||
19
Nuobu
17.08.15
✎
17:40
|
(17) Я знаю, что ТС хочет получить и сам писал такие запросы. Поверь, это не простой запросик.
|
|||
20
18_plus
17.08.15
✎
17:43
|
(19) не убедил. вижу простую задачу и непонимание того, как работают запросы.
|
|||
21
PCcomCat
17.08.15
✎
17:49
|
Как понимаете выше был макет запроса. Вот мой запрос:
"ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказПокупателяДокумент.Ссылка КАК Заказ, | ЗаказПокупателяДокумент.Ссылка.Номер, | ЗаказПокупателяДокумент.Ссылка.Дата КАК Дата, | ЗаказПокупателяДокумент.Ссылка.Контрагент, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование КАК ЗаявкаРасчет, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование.Основание.Замерщик КАК МонтажнаяБригада, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование.Основание КАК ДокументЗаякаНаЗамер, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование.Основание.ДатаЗамера КАК ДатаЗамера |ПОМЕСТИТЬ ТаблицаЗамеров |ИЗ | Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяДокумент |ГДЕ | ЗаказПокупателяДокумент.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И ЗаказПокупателяДокумент.Ссылка.Организация В(&СписокОрганизаций) | И ЗаказПокупателяДокумент.Номенклатура В ИЕРАРХИИ(&ГруппаРаботПоМонтажу) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказПокупателяДокумент.Ссылка КАК Заказ, | ЗаказПокупателяДокумент.Ссылка.Номер, | ЗаказПокупателяДокумент.Ссылка.Дата, | ЗаказПокупателяДокумент.Ссылка.Контрагент, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование КАК ЗаявкаРасчет, | ЗаданиеНаМонтажТовары.Ссылка.МонтажнаяБригада, | ЗаданиеНаМонтажТовары.Ссылка КАК ДокументЗаданиеНаМонтаж, | ЗаданиеНаМонтажТовары.Ссылка.ДатаМонтажа КАК ДатаМонтажаЗапланировано |ПОМЕСТИТЬ ТаблицаЗаданийНаМонтаж |ИЗ | Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяДокумент | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаданиеНаМонтаж.Товары КАК ЗаданиеНаМонтажТовары | ПО (ЗаданиеНаМонтажТовары.Заказ = ЗаказПокупателяДокумент.Ссылка) | И (ЗаданиеНаМонтажТовары.Ссылка.Проведен = ИСТИНА) |ГДЕ | ЗаказПокупателяДокумент.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И ЗаказПокупателяДокумент.Ссылка.Организация В(&СписокОрганизаций) | И ЗаказПокупателяДокумент.Номенклатура В ИЕРАРХИИ(&ГруппаРаботПоМонтажу) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаказПокупателяДокумент.Ссылка КАК Заказ, | ЗаказПокупателяДокумент.Ссылка.Номер, | ЗаказПокупателяДокумент.Ссылка.Дата, | ЗаказПокупателяДокумент.Ссылка.Контрагент, | ЗаказПокупателяДокумент.Ссылка.ДокументОснование КАК ЗаявкаРасчет, | ОтчетОМонтажеТовары.Ссылка.МонтажнаяБригада, | ОтчетОМонтажеТовары.Ссылка КАК ДокументОтчетОМонтаже, | ОтчетОМонтажеТовары.Ссылка.Дата КАК ДатаМонтажаВыполнено |ПОМЕСТИТЬ ТаблицаОтчетовОМонтаже |ИЗ | Документ.ЗаказПокупателя.Услуги КАК ЗаказПокупателяДокумент | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОМонтаже.Товары КАК ОтчетОМонтажеТовары | ПО ЗаказПокупателяДокумент.Ссылка = ОтчетОМонтажеТовары.Заказ | И (ОтчетОМонтажеТовары.Ссылка.Проведен = ИСТИНА) |ГДЕ | ЗаказПокупателяДокумент.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И ЗаказПокупателяДокумент.Ссылка.Организация В(&СписокОрганизаций) | И ЗаказПокупателяДокумент.Номенклатура В ИЕРАРХИИ(&ГруппаРаботПоМонтажу) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаЗамеров.Заказ КАК Заказ, | ТаблицаЗамеров.Номер, | ТаблицаЗамеров.Дата КАК Дата, | ТаблицаЗамеров.Контрагент, | ТаблицаЗамеров.ЗаявкаРасчет, | ТаблицаСуммыДокумента.СуммаСУчетомСкидки КАК СтоимостьМонтажа, | СтатусыЗаказовСрезПоследних.Статус, | ТаблицаЗамеров.МонтажнаяБригада КАК МонтажнаяБригада, | ТаблицаЗамеров.ДокументЗаякаНаЗамер, | ТаблицаЗамеров.ДатаЗамера, | ТаблицаЗаданийНаМонтаж.ДокументЗаданиеНаМонтаж, | ТаблицаЗаданийНаМонтаж.ДатаМонтажаЗапланировано, | ТаблицаОтчетовОМонтаже.ДокументОтчетОМонтаже, | ТаблицаОтчетовОМонтаже.ДатаМонтажаВыполнено |ИЗ | ТаблицаЗамеров КАК ТаблицаЗамеров | ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаЗаданийНаМонтаж КАК ТаблицаЗаданийНаМонтаж | ПО ТаблицаЗамеров.Заказ = ТаблицаЗаданийНаМонтаж.Заказ | И ТаблицаЗамеров.ЗаявкаРасчет = ТаблицаЗаданийНаМонтаж.ЗаявкаРасчет | И ТаблицаЗамеров.МонтажнаяБригада = ТаблицаЗаданийНаМонтаж.МонтажнаяБригада | ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаОтчетовОМонтаже КАК ТаблицаОтчетовОМонтаже | ПО ТаблицаЗамеров.Заказ = ТаблицаОтчетовОМонтаже.Заказ | И ТаблицаЗамеров.ЗаявкаРасчет = ТаблицаОтчетовОМонтаже.ЗаявкаРасчет | И ТаблицаЗамеров.МонтажнаяБригада = ТаблицаОтчетовОМонтаже.МонтажнаяБригада | ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | ЗаявкаРасчетУслуги.Ссылка КАК ЗаявкаРасчет, | СУММА(ЗаявкаРасчетУслуги.СуммаСУчетомСкидки) КАК СуммаСУчетомСкидки | ИЗ | Документ.ЗаявкаРасчет.Услуги КАК ЗаявкаРасчетУслуги | | СГРУППИРОВАТЬ ПО | ЗаявкаРасчетУслуги.Ссылка) КАК ТаблицаСуммыДокумента | ПО ТаблицаЗамеров.ЗаявкаРасчет = ТаблицаСуммыДокумента.ЗаявкаРасчет | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыЗаказов.СрезПоследних(&ДатаОкончания, ) КАК СтатусыЗаказовСрезПоследних | ПО ТаблицаЗамеров.Заказ = СтатусыЗаказовСрезПоследних.ЗаказПокупателя | |УПОРЯДОЧИТЬ ПО | Дата, | Заказ, | МонтажнаяБригада"; |
|||
22
Мимохожий Однако
17.08.15
✎
17:55
|
(21)Не работает?
|
|||
23
PCcomCat
17.08.15
✎
17:56
|
(22) Ну почему же, работает :), только совсем криво!
|
|||
24
PCcomCat
17.08.15
✎
17:57
|
Если я создаю одинаковое количество полей и объединяю через ОБЪЕДИНИТЬ ВСЕ, то получаю 18 строк : по три строки для шести заказов.
Для запроса, выложенного выше, получаю все те же 18 строк, только заказы заполнены в трех строках из первой таблицы, а в остальных пусто, ну кроме нужных колонок, которые хочется в одну строку объединить. |
|||
25
PCcomCat
17.08.15
✎
17:59
|
+(24) Не для трех, а для шести.
|
|||
26
roman52
17.08.15
✎
19:31
|
(20) Nuobu дело говорит, нужно нумеровать и по номеру строки соединять
т.к. может быть различное количество документов разного типа, например документов 1-го типа 3 штуки, 2-го - 2 штуки, 3-го - 10 штук |
|||
27
mogul
17.08.15
✎
19:37
|
|ВЫБРАТЬ
| Док1.Ссылка.Док КАК Ссылка, | Док1.Контрагент КАК Контрагент |поместить т |ИЗ | Документ.Док1 КАК Док1 |объединить |ВЫБРАТЬ | Док2.Ссылка.Док КАК Ссылка, | Док2.Контрагент КАК Контрагент |объединить |ВЫБРАТЬ | Док3.Ссылка.Док КАК Ссылка, | Док3.Контрагент КАК Контрагент; |ВЫБРАТЬ | т.Ссылка, | т.Контрагент, | Док1.ЗаявкаНаЗамер, | Док2.ЗаявкаНаДоставку, | Док3.ЗаявкаНаМонтаж |ИЗ | т | левое соедение Документ.Док1 КАК Док1 по т.контрагент = док1.контрагент и т.ссылка = Док1.Ссылка.Док | левое соедение Документ.Док2 КАК Док2 по т.контрагент = док2.контрагент и т.ссылка = Док2.Ссылка.Док | левое соедение Документ.Док3 КАК Док3 по т.контрагент = док3.контрагент и т.ссылка = Док3.Ссылка.Док |
|||
28
EvgeniuXP
17.08.15
✎
21:06
|
7 лет на форуме - не знают соединения... прямая дорога в http://www.spec8.ru
|
|||
29
PCcomCat
17.08.15
✎
21:23
|
(28) Знаете? Так подскажите!
|
|||
30
Абыр
17.08.15
✎
22:10
|
(0) с учетом того, что Ссылка из Док1, Док2, Док3 - это всегда будут разные значения, то задача, видимо, сформулирована неверно
|
|||
31
roman52
17.08.15
✎
22:20
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |