1С запрос соединение 3х таблиц, две из которых с одинаковым содержанием

1. YuriyKi 20.06.22 15:37 Сейчас в теме
Здравствуйте! Помогите, пожалуйста, начинающему специалисту. Нужно соединить 3 таблицы, загвоздка в том, что 2я и 3я таблицы с одинаковым содержанием (так нужно). Поэтому в результирующей таблице в первой колонке встречаются 4 одинаковые записи, а во 2й и 3й идет чередование записей: результат1 и результат1; результат1 и результат2; результат2 и результат1; результат2 и результат2. А нужно сделать чтобы была одна строка с результат1 и результат2.
+
Найденные решения
12. nomad_irk 72 24.06.22 23:24 Сейчас в теме
(11)опять же: если существует только два значения - Проушина1 и Проушина2, то решение может быть и через агрегирующие функции Минимум и Максимум, но придется сделать отдельную временную таблицу:

Выбрать
   SKU,
   Product,
   Part,
   Минимум(eye1) как eye1,
   максимум(eye2) как eye2
ПОМЕСТИТЬ ВТ_Проушины
ИЗ
   ТаблицаBoMs
СГРУППИРОВАТЬ ПО
   SKU,
   Product,
   Part
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1203706 13 20.06.22 15:40 Сейчас в теме
(1) в подзапросе union all, с наружи group by
+
3. YuriyKi 20.06.22 17:22 Сейчас в теме
(2) Спасибо! Попробую.
+
4. YuriyKi 21.06.22 18:24 Сейчас в теме
(2)Прошу прощения, а можно подробнее. Я видимо что то не правильно делаю - у меня все равно получается то же самое:
Запись результат1 и результат1
Запись результат1 и результат2
Запись результат2 и результат1
Запись результат2 и результат2
Значение записей результат не числовое.
+
5. nomad_irk 72 22.06.22 08:58 Сейчас в теме
(4)Более предметно можете показать исходные таблицы и что должно получится в итоге?
+
7. YuriyKi 22.06.22 18:10 Сейчас в теме
(5)Прикрепил файл, в нем 3 таблицы: в Ресурсной спецификации, среди прочих есть ДетальХ с индивидуальной характеристикой, так же есть Ресурсные спецификации, которые вообще не содержат ДеталиХ, содержат одну ДетальХ, содержат две одинаковых ДеталиХ и содержат две разных ДеталиХ. Нужно соединить или объединить эти 3 таблицы, так что бы получился результат:
РесСпецификация Характ-каДетали1 Характ-каДетали2
Спецификация1 Характеристика1
Спецификация2 Характеристика2 Характеристика2
Спецификация3 Характеристика3 Характеристика4
Спецификация4 ______________ ______________

Цифры Спецификаций и Характеристик значения не играют, они могут варьироваться и указывают только на то, что они различаются.
Прикрепленные файлы:
Таблица.odg
+
9. nomad_irk 72 23.06.22 09:20 Сейчас в теме
(7)Еще больше сумбура получилось, ИМХО.

В спецификации указаны выходные детали и их характеристики.
Простой запрос вида:

Выбрать
     ВыходноеИзделие.Ссылка,
     ВыходноеИзделие.Номенклатура,
     ВыходноеИзделие.Характеристика
ИЗ
     Спецификации.ВыходныеИзделия КАК ВыходноеИзделие


Даст вам результат:

Результат


В чем подвох не могу понять:
спецификация может быть на стопицот разных деталей, а нужно разбить на 2 столбца по двум характеристикам, т.е. получить результат вида:

Как должно быть

или что/как?
+
10. YuriyKi 24.06.22 18:38 Сейчас в теме
(9)Вот полный текст задания.

В базе данных есть заполненная таблица BoMs, в которой имеются колонки product, part и SKU. Необходимо написать запрос, результатом которого будет таблица с колонками product, bumper, rod, mount, eye1, eye2.
В колонку product должны попасть данные из одноимённой колонки таблицы BoMs, но без повторений.
В колонку bumper должны попасть данные из колонки SKU для той строки, в которой указано соответствующее значение product и в колонке part наименование содержит словосочетание "скоба стопорная" или "опора буфера". В таблице BoMs для каждого значения product может быть только одна строка, содержащая одно из данных словосочетаний, но не слова и словосочетания, используемые для других колонок результата запроса.
В колонку rod должны попасть данные из колонки SKU для той строки, в которой указано соответствующее значение product и в колонке part наименование содержит слово "шток". В таблице BoMs для каждого значения product может быть только одна строка, содержащая данное слово, но не слова и словосочетания, используемые для других колонок результата запроса.
В колонку mount должны попасть данные из колонки SKU для той строки, в которой указано соответствующее значение product и в колонке part наименование содержит словосочетание "шток крепления" или "дно". В таблице BoMs для каждого значения product может быть только одна строка, содержащая одно из данных словосочетаний, но не слова и словосочетания, используемые для других колонок результата запроса.
В колонку eye1 должны попасть данные из колонки SKU для одной строки, в которой указано соответствующее значение product и в колонке part наименование содержит слово "проушина". В таблице BoMs для каждого значения product может быть одна или две строки, содержащие данное слово. В колонку eye2 должны попасть данные из колонки SKU для другой строки того же значения product (если есть), у которой в колонке part наименование содержит слово "проушина".

2 последние колонки содержат одинаковые детали. Как я уже и писал: изделие может не содержать этих деталей, может содержать одну, две одинаковых или две разных. Поэтому при составлении запроса, в этих 2х колонка наименование деталей просто чередуется, а должна быть одна уникальная запись:

eye1 eye2
проушина1 проушина2

А не:
eye1 eye2
проушина1 проушина2
проушина2 проушина1
проушина1 проушина1
проушина2 проушина2
+
11. YuriyKi 24.06.22 18:39 Сейчас в теме
(10)Первые колонки я опустил, потому что с ними проблем не возникло.
+
12. nomad_irk 72 24.06.22 23:24 Сейчас в теме
(11)опять же: если существует только два значения - Проушина1 и Проушина2, то решение может быть и через агрегирующие функции Минимум и Максимум, но придется сделать отдельную временную таблицу:

Выбрать
   SKU,
   Product,
   Part,
   Минимум(eye1) как eye1,
   максимум(eye2) как eye2
ПОМЕСТИТЬ ВТ_Проушины
ИЗ
   ТаблицаBoMs
СГРУППИРОВАТЬ ПО
   SKU,
   Product,
   Part
Показать
+
32. YuriyKi 12.07.22 14:30 Сейчас в теме
(12) Спасибо за подсказку, дала верное направление. Окончательный запрос выглядит следующим образом:

ВЫБРАТЬ
    Спецификация,
    МИНИМУМ(Проушина) КАК Проушина1,
    ВЫБОР
        КОГДА МАКСИМУМ(Проушина) <> МИНИМУМ(Проушина)
        ТОГДА МАКСИМУМ(Проушина)
        ИНАЧЕ NULL
        КОНЕЦ КАК Проушина2
ИЗ
    Проушины
СГРУППИРОВАТЬ ПО Спецификация
Показать
+
13. Vitaly1C8 24.06.22 23:32 Сейчас в теме
(10)
SELECT
BoMs.product , 
SKU КАК bumper ,
NULL КАК rod ,
NULL КАК mount 
WHERE part = "скоба стопорная" или part = "опора буфера"

UNI ON ALL

SELECT
BoMs.product , 
NULL КАК bumper ,
SKU КАК rod ,
NULL КАК mount 
WHERE part ПОДОБНО "%шток%"

UNION ALL

SEL ECT
BoMs.product , 
NULL КАК bumper ,
NULL КАК rod ,
SKU КАК mount 
WHERE part = "шток крепления" или part = "дно"

// последний кусок напиши сам для тренировки
Показать
+
25. gybson 11.07.22 22:10 Сейчас в теме
(10) А потом забанят за магичские строки =)

Как я понимаю это что-то типа вагонов, которые могу соединяться(mount) путем совмещения своих проушен(eye) и штока(rod). Все это на соединительном механизме (bumper) определенного типа вагона (product).

Просто беги и не вспоминай больше. Сами бред пишут и тебя заставят.

Если что, я в компаниях с вагонами никогда не работал, но слышал.
+
26. gybson 11.07.22 22:20 Сейчас в теме
(10) Таблица, которая не находится даже в первой нормальной форме, должна быть приведена к ней по неким неформальным признакам и это поручают начинающему специалисту.

Мой опыт подсказывает, что проще закрыть контору и открыть новую.
+
6. ignorant 22.06.22 16:31 Сейчас в теме
(4) Или текст запроса. можно неполный, с полями из 3-х разных таблиц к качестве примера.
+
14. YuriyKi 11.07.22 10:07 Сейчас в теме
(6)
ВЫБРАТЬ
	РесурснаяСпецификация,
	Проушина1,
	Проушина2
ИЗ
	(ВЫБРАТЬ
		Спецификации.Ссылка КАК РесурснаяСпецификация,
		Спецификации.Характеристика КАК Проушина1,
		0 КАК Проушина2	
	ИЗ
		Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК Спецификации
	ГДЕ
		Спецификации.Ссылка В ИЕРАРХИИ (&Амортизаторы)
		И Спецификации.Номенклатура.Наименование ПОДОБНО "проушина%"

	ОБЪЕДИНИТЬ ВСЕ

	ВЫБРАТЬ
		Спецификации.Ссылка КАК РесурснаяСпецификация,
		0,
		Спецификации.Характеристика КАК Проушина2
	ИЗ
		Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК Спецификации
	ГДЕ
		Спецификации.Ссылка В ИЕРАРХИИ (&Амортизаторы)
		И Спецификации.Номенклатура.Наименование ПОДОБНО "проушина%") КАК Проушина
Показать



Проушины в колонках чередуются, помогите доработать.
+
15. homer_ 78 11.07.22 10:28 Сейчас в теме
(14)
(ВЫБРАТЬ
Спецификации.Ссылка КАК РесурснаяСпецификация,
Спецификации.Характеристика КАК Проушина1,
0 КАК Проушина2


Берешь Excel в нем заводишь исходные данные (не всю таблицу со сто миллионов строк, а только пару строк, что бы можно было понять нюансы),
далее таблица что хочешь получить.
Делаешь прин скин и прикрепляешь сюда.
+
17. YuriyKi 11.07.22 11:51 Сейчас в теме
(15)Последняя колонка - это не результат запроса, для пояснения. Реальные наименования изделий написать не могу.
Прикрепленные файлы:
+
18. homer_ 78 11.07.22 11:53 Сейчас в теме
(17) я написал вроде понятно, что есть (исходные таблицы) и что надо. где это все у тебя?
+
19. YuriyKi 11.07.22 13:48 Сейчас в теме
(18)Примерно так выглядят исходные таблицы.
Прикрепленные файлы:
+
20. homer_ 78 11.07.22 14:00 Сейчас в теме
(19) и какой результат должен быть?
+
22. nomad_irk 72 11.07.22 15:31 Сейчас в теме
(17)
ВЫБРАТЬ
     Спецификации.Ссылка КАК Спецификация,
     Спецификации.Характеристика
     СУММА(1) КАК НомерХарактеристики
ПОМЕСТИТЬ ВТНумерацияХарактеристик
ИЗ
     Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК Спецификации
         Левое Соединение Справочник.РесурсныеСпецификации.МатериалыИУслуги КАК НумерацияХарактеристик
         По Спецификации.Ссылка = НумерацияХарактеристик.Ссылка
            И Спецификации.Характеристика > НумерацияХарактеристик.Характеристика
ГДЕ
     Спецификации.Ссылка В ИЕРАРХИИ (&Амортизаторы)
     И Спецификации.Номенклатура.Наименование ПОДОБНО "проушина%"
СГРУППИРОВАТЬ ПО
     Спецификации.Ссылка,
     Спецификации.Характеристика
;

Выбрать
     Спецификация.Ссылка КАК РесурснаяСпецификация,
     Характеристика1.Характеристика КАК Характеристика1,
     Характеристика2.Характеристика КАК Характеристика2
ИЗ
     Справочник.РесурсныеСпецификации КАК Спецификация     
       ЛЕВОЕ СОЕДИНЕНИЕ ВТНумерацияХарактеристик КАК Характеристика1
       ПО Спецификация.Ссылка = Характеристика1.Спецификация
          И Характеристика1.НомерХарктеристики = 1
       ЛЕВОЕ СОЕДИНЕНИЕ ВТНумерацияХарактеристик КАК Характеристика2
       ПО Спецификация.Ссылка = Характеристика1.Спецификация
          И Характеристика2.НомерХарктеристики = 2
Показать
+
24. YuriyKi 11.07.22 18:43 Сейчас в теме
(22)Спасибо. Завтра попробую.
+
28. YuriyKi 12.07.22 08:01 Сейчас в теме
(22) К сожалению, ваш вариант не работает, т. к. в ресурсной спецификации позиций намного больше чем 1 или 2.Благодарю за уделенное время.
+
30. nomad_irk 72 12.07.22 11:29 Сейчас в теме
(28)Из вашего описания вообще не понятно, что должно быть, если позиций больше 2-х.....
+
23. YuriyKi 11.07.22 18:42 Сейчас в теме
(17)Должно получиться примерно так:
Прикрепленные файлы:
+
31. homer_ 78 12.07.22 11:42 Сейчас в теме
(23) а почему в спецификаци2 одна проушина) на основании каких данных вы это поняли?
+
16. ignorant 11.07.22 10:30 Сейчас в теме
(14)ВЫБРАТЬ РАЗЛИЧНЫЕ пробовали?
21. vadim.semyonov.rzn 11.07.22 14:11 Сейчас в теме
(14)
Проушины в колонках чередуются, помогите доработать.
Затолкайте этот запрос во временную таблицу или во вложенный запрос, потом выберите из него с сортировкой. По-моему, должно сработать.
+
8. YuriyKi 22.06.22 18:12 Сейчас в теме
Прошу прощения, вставит скрин не получилось(((
+
27. Bukaska 140 12.07.22 07:41 Сейчас в теме
(8)Чего не получается? Внизу под сообщением кнопка: "Прикрепить файл"
+
29. YuriyKi 12.07.22 08:27 Сейчас в теме
(27)Не получилось добавить скрин, добавил файл с таблицей.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот