|
Как соединить две таблицы без дублей? | ☑ | ||
---|---|---|---|---|
0
v_clim
20.11.12
✎
23:57
|
Есть две таблицы
таблица 1 (регистрнакопления ПродажиОбороты) Контрагент Номенклатура СуммаТ Клиент1 товар1 100 Клиент1 товар2 50 Клиент1 товар3 30 Клиент1 товар4 20 таблица 2 (регистрнакопления ТоварыПереданныеОстатки) Контрагент Оборудование СуммаО Клиент1 Стойка 700 Необходимо получить следующее соединение (группируем по контрагенту) Контрагент Номенклатура СуммаТ Оборудование СуммаО Клиент1 товар1 100 Стойка 700 Клиент1 товар2 50 NULL 0 Клиент1 товар3 30 NULL 0 Клиент1 товар4 20 NULL 0 Но при левом соединении получаем дубли Контрагент Номенклатура СуммаТ Оборудование СуммаО Клиент1 товар1 100 Стойка 700 Клиент1 товар2 50 Стойка 700 Клиент1 товар3 30 Стойка 700 Клиент1 товар4 20 Стойка 700 Как избавиться от этих дблей? |
|||
1
Undefined vs NULL
20.11.12
✎
23:59
|
вопрос такой, а почему к 1 товару, а не к второму?
|
|||
2
cViper
20.11.12
✎
23:59
|
(0) Какой смысл в колонке товар?
|
|||
3
v_clim
21.11.12
✎
00:01
|
Смысл этого всего в одном отчете показать продажи клиентов которые взяли оборудование в аренду. и какие товары они выбирают
|
|||
4
cViper
21.11.12
✎
00:03
|
(3) Так тебе надо показать все содержимое колонки с товаром а не одну позицию.
|
|||
5
Undefined vs NULL
21.11.12
✎
00:03
|
чем второй вариант
Клиент1 товар1 100 Стойка 700 Клиент1 товар2 50 Стойка 700 Клиент1 товар3 30 Стойка 700 Клиент1 товар4 20 Стойка 700 не устроил то? |
|||
6
cViper
21.11.12
✎
00:04
|
(3) должны ли у тебя итоги по СУММАТ считаться и как?
|
|||
7
zak555
21.11.12
✎
00:04
|
(5) он должен быть такой
Клиент1 товар1 100 Клиент1 товар2 50 Клиент1 товар3 30 Клиент1 товар4 20 Клиент1 Стойка 700 |
|||
8
cViper
21.11.12
✎
00:07
|
Если (7) прав, то оставляй так
Клиент1 товар1 100 Стойка 700 Клиент1 товар2 50 Стойка 700 Клиент1 товар3 30 Стойка 700 Клиент1 товар4 20 Стойка 700 и добавь сюда иерархическую запись. Потом при выводе не нужные поля не выводи. |
|||
9
wertyu
21.11.12
✎
00:16
|
объединить
|
|||
10
v_clim
21.11.12
✎
00:23
|
В этом варианте
Клиент1 товар1 100 Стойка 700 Клиент1 товар2 50 Стойка 700 Клиент1 товар3 30 Стойка 700 Клиент1 товар4 20 Стойка 700 Он суммирует стойку и в итоге по Стойке выдаст 2800, а должен 700 |
|||
11
zak555
21.11.12
✎
00:24
|
(10) покажи свой код запроса
|
|||
12
v_clim
21.11.12
✎
00:24
|
Вариант (7) вроде нормальный буду пробовать. Это все на СКД надо будет сделать
|
|||
13
v_clim
21.11.12
✎
00:25
|
ВЫБРАТЬ
ТоварыПереданныеОстатки.Контрагент КАК КонтрагентК, ТоварыПереданныеОстатки.Номенклатура КАК Оборудование, ТоварыПереданныеОстатки.КоличествоОстаток КАК КоличествоОборудования, ТоварыПереданныеОстатки.СуммаВзаиморасчетовОстаток КАК СуммаК, ТоварыПереданныеОстатки.СуммаВзаиморасчетовОстаток / ТоварыПереданныеОстатки.КоличествоОстаток КАК ЦенаПродажи ПОМЕСТИТЬ Комиссия ИЗ РегистрНакопления.ТоварыПереданные.Остатки(, Контрагент = &Контр) КАК ТоварыПереданныеОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПродажиОбороты.Контрагент, ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот КАК Количество, ПродажиОбороты.СтоимостьОборот КАК Сумма ПОМЕСТИТЬ Продажи ИЗ РегистрНакопления.Продажи.Обороты(, , , Контрагент = &Контр) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Продажи.Контрагент КАК Контрагент, Продажи.Номенклатура, СУММА(Продажи.Количество) КАК Количество, СУММА(Продажи.Сумма) КАК Сумма, Комиссия.КонтрагентК, Комиссия.Оборудование, СУММА(Комиссия.КоличествоОборудования) КАК КоличествоОборудования, СУММА(Комиссия.СуммаК) КАК СуммаК, СУММА(Комиссия.ЦенаПродажи) КАК ЦенаПродажи ИЗ Комиссия КАК Комиссия ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи ПО Комиссия.КонтрагентК = Продажи.Контрагент СГРУППИРОВАТЬ ПО Комиссия.Оборудование, Продажи.Контрагент, Продажи.Номенклатура, Комиссия.КонтрагентК ИТОГИ СУММА(Сумма), СУММА(СуммаК) ПО ОБЩИЕ |
|||
14
zak555
21.11.12
✎
00:29
|
выбрать
р1.контрагент как клиент, р1.Номенклатура как товар, р1.Сумма как СуммаТ, null, 0 из РегистрНакопления.Продажи.Обороты как р1 объеденить всё выбрать р2.контрагент как клиент, NULL, 0, р2.Номенклатура как Оборудование , р2.Сумма как СуммаО из егистрНакопления.ТоварыПереданные.Остатки как р2 |
|||
15
Птица
21.11.12
✎
00:34
|
(14) не получится. строки не сложатся как надо.
|
|||
16
zak555
21.11.12
✎
00:36
|
(15) ???
|
|||
17
Птица
21.11.12
✎
00:46
|
(0)
(0) здесь нужен счетчик строк. Если бы он был у каждой из таблиц, можно было бы добавить его в левое соединение, и все соединилось бы как надо. а счетчик строк получается, например, соединением таблицы с самой собой: ВЫБРАТЬ Сумма(А.НомерСтроки) КАК НомерСтроки, А.Номенклатура, А.Клиент ИЗ (ВЫБРАТЬ 1 КАК НомерСтроки, А1.Клиент КАК Клиент, А1.Номенклатура КАК Номенклатура, А2.Номенклатура КАК Номенклатура2 ИЗ А КАК А1 ЛЕВОЕ СОЕДИНЕНИЕ А КАК А2 ПО А1.Клиент = А2.Клиент И А1.Номенклатура >= A2.Номенклатура) КАК А СГРУППИРОВАТЬ ПО А.КЛИЕНТ, А.Номенклатура как-то так. хотя, возможно появятся тормоза. |
|||
18
Птица
21.11.12
✎
00:48
|
(16) нужно, чтобы в одной сстроке появились товар и оборудование. через (14) этого не произойдет - сначала будет строка с товаром, а потом - строка с оборудованием
|
|||
19
Птица
21.11.12
✎
00:54
|
+(17)хотя, возможно, операция сравнения на больше -меньше к ссылочному типу не применяется. тогда нужно что -то другое, примитивного типа и уникальное. возможно, код.
|
|||
20
zak555
21.11.12
✎
00:55
|
(18) видел (12) ?
|
|||
21
AlexITGround
21.11.12
✎
01:02
|
только в 9 чувак сказал очевидную вещь
|
|||
22
v_clim
21.11.12
✎
01:22
|
Сделал объединение пойдет. Всем спасибо! :-)
|
|||
23
zak555
21.11.12
✎
01:23
|
(22) что ты сделал ?
|
|||
24
v_clim
21.11.12
✎
01:27
|
Просто объединил и сгруппировал по контрагенту. Все сделал в СКД. Закрыл глаза на то, что номенклатура и оборудование не в одной строке выводятся.
|
|||
25
zak555
21.11.12
✎
01:29
|
код покажи
|
|||
26
v_clim
21.11.12
✎
01:31
|
ВЫБРАТЬ
ТоварыПереданныеОстатки.Контрагент, ТоварыПереданныеОстатки.Номенклатура КАК Оборудование, ТоварыПереданныеОстатки.КоличествоОстаток КАК КоличествоОборудования, ТоварыПереданныеОстатки.СуммаВзаиморасчетовОстаток КАК СуммаК, ТоварыПереданныеОстатки.СуммаВзаиморасчетовОстаток / ТоварыПереданныеОстатки.КоличествоОстаток КАК ЦенаПродажи, NULL КАК Номенклатура, NULL КАК Количество, NULL КАК Сумма ИЗ РегистрНакопления.ТоварыПереданные.Остатки КАК ТоварыПереданныеОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ПродажиОбороты.Контрагент, NULL, NULL, NULL, NULL, ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот ИЗ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |