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 71 24.06.22 23:24 Сейчас в теме
(11)опять же: если существует только два значения - Проушина1 и Проушина2, то решение может быть и через агрегирующие функции Минимум и Максимум, но придется сделать отдельную временную таблицу:

Выбрать
   SKU,
   Product,
   Part,
   Минимум(eye1) как eye1,
   максимум(eye2) как eye2
ПОМЕСТИТЬ ВТ_Проушины
ИЗ
   ТаблицаBoMs
СГРУППИРОВАТЬ ПО
   SKU,
   Product,
   Part
Показать
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. user1203706 12 20.06.22 15:40 Сейчас в теме
(1) в подзапросе union all, с наружи group by
3. YuriyKi 20.06.22 17:22 Сейчас в теме
4. YuriyKi 21.06.22 18:24 Сейчас в теме
(2)Прошу прощения, а можно подробнее. Я видимо что то не правильно делаю - у меня все равно получается то же самое:
Запись результат1 и результат1
Запись результат1 и результат2
Запись результат2 и результат1
Запись результат2 и результат2
Значение записей результат не числовое.
5. nomad_irk 71 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 71 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 71 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 71 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 71 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)Не получилось добавить скрин, добавил файл с таблицей.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)