Объединение таблиц

Автор banan22vo, марта 19, 2020, 10:12:50 pm

« предыдущая - следующая »

banan22vo

Приветствую! У меня ступор, помогите решить задачу пожалуйста.
есть 2 таблицы
1)
[MainData_Еxplanation]:
LOAD
[ПериодДень],
[ДокументОснование],
[КонтрагентКод],
[ПериодЗатрат],
[Ссылка],
[НоменклатураКод],
[Документ] AS [Реализация расшифровки],
[ВидОперации],
[Сумма];
SELECT *
FROM QlikDB.dbo."MainData_Еxplanation";
2)
[ЕxplanationDocs]:
LOAD 
[Регистратор]  AS [Реализация расшифровки],
[Стоимость],
[НоменклатураКод]
;
SELECT *
FROM QlikDB.dbo."ЕxplanationDocs";

Пытаюсь их соединить не потеряв логику.
Суть в том, что расшифровки есть с товаром (номенклатурой), а есть с реализацией, которая в свою очередь ссылается на товар.
Я пытался соединить через LEFT JOIN ([MainData_Еxplanation]) , но поле НоменклатураКод не переносится, если его не переименовать, а мне необходимо чтобы эти поля слились..
Чем воспользоваться, что прочесть, подскажите пожалуйста, как получить одно поле с номенклатурами с двух таблиц на уровне скрипта.
Смог объединить в измерении, но этот вариант мне не подходит, так как к к Коду подключается еще справочник

govorun

марта 21, 2020, 09:15:35 am #1 Последнее редактирование: марта 21, 2020, 10:17:16 am от govorun
Цитата: banan22vo от марта 19, 2020, 10:12:50 pmLEFT JOIN ([MainData_Еxplanation]) , но поле НоменклатураКод

1. Уберите AS... из обеих таблиц или после AS должны быть разные ИМЕНА.
2. При LEFT JOIN поле НоменклатураКод (одинаковой название в 2-х таблицах) останется одно (!!!), так задуман LEFT JOIN.
3. После LEFT JOIN все из второй таблицы перекачует в первую при условии что ЕxplanationDocs.НоменклатураКод = MainData_Еxplanation.НоменклатураКод

Еще вариант.
Сделайте пункт 1. Дополните код для второй таблицы:
NoConcatenete
[ЕxplanationDocs]:
LOAD
...

Получите модель - две связанные таблицы

banan22vo

Боюсь это не поможет.
Может я выражаюсь не совсем верно. Вот наглядно попытался изобразить что мне необходимо.

Uunit

Используйте это.
Left join ([MainData_Еxplanation])
LOAD
[Регистратор]  AS [Реализация расшифровки]
[Стоимость],
[НоменклатураКод] as [НоменклатураКод2]
;
SELECT *
FROM QlikDB.dbo."ЕxplanationDocs";

Коллега выше, пытался вам объяснить что у вас в таблица1 и в таблица2 содержат два столбца с одинаковым названием, отсюда ошибки при объединении.

Но добавив только это, мы ещё не решим вашу задачу.
Теперь у нас будет Таблица с "Необходимым результатом" но НоменклатураКод для строк"Расшифровка2" будет пустым.

тогда делаем следующее. Загружаем таблицу1 и добавляем условие: IF(IsNull(НоменклатураКод),НоменклатураКод2,НоменклатураКод) as НоменклатураКод

В целом всё. Главное будьте внимательны, чтобы таблица1 и таблица3 не задублировала данные. Лучше от первой таблицы избавится.

govorun

Вот еще неплохой подход:
Load *;
select
      T1.*,
      T2.Стоимость
 From MainData_Еxplanation T1
 Left Join ЕxplanationDocs T2 ON T2.Док.Реализации = T1.Док.Реализации
Возможно название поля "Док.Реализации" придется взять либо в кавычки, либо в квадратные скобки, либо еще как... Точка там, а это не есть хорошо для названия поля.

banan22vo

Govorun, Uunit, вам премного благодарен!
Через IsNull не получилось, попробовал через Len(НоменклатураКод)=0 -сработало!
Еще поковыряю вариант с IsNull для понимания...
Этот форум мой лучший друг)
Еще раз спасибо!