|
И снова запрос - из двух таблиц одну | ☑ | ||
---|---|---|---|---|
0
Масянька
05.06.23
✎
12:31
|
День добрый!
Есть 2 таблицы. 1 таблица (нормы выдачи): должность, номенклатура, количество, срок 2 таблица (регистр материалов): сотрудник, должность, номенклатура, дата выдачи, остаток. В 1 таблице меньше значений (должности не повторяются). Нужно получить новую таблицу: сотрудник, должность, номенклатура, количество, срок, остаток, дата выдачи. Из 2 таблицы не должны попадать строки с номенклатурой, которой нет в 1 таблице, а из 1 таблицы должны попасть строки с номенклатурой, которой нет во 2 таблице. Пример: 1 таблица Водитель Жилет 1 12 Водитель Ботинки 1 36 Кладовщик Жилет 1 12 Кладовщик Плащ 1 36 Кладовщик Перчатки 1 12 2 таблица Иванов Водитель Жилет 1 01.01.23 Петрова Кладовщик Жилет 1 01.01.23 Петрова Кладовщик Перчатки 1 01.01.23 Должно получиться Иванов Водитель Жилет 1 12 1 01.01.23 Иванов Водитель Ботинки 1 36 Петрова Кладовщик Жилет 1 12 1 01.01.23 Петрова Кладовщик Плащ 1 36 Петрова Кладовщик Перчатки 1 12 1 01.01.23 Сейчас (тек. версия, сил нет) запрос такой ВЫБРАТЬ ВТСпецодеждаВНаличии.ФизЛицо КАК ФизЛицо, ВТНормыВыдачи.ДополнениеДолжности, ВТНормыВыдачи.Номенклатура КАК Номенклатура, ВТСпецодеждаВНаличии.КоличествоОстаток, ВТСпецодеждаВНаличии.ДокументПередачиДата, ВТНормыВыдачи.Количество, ВТНормыВыдачи.СрокИспользования ИЗ ВТНормыВыдачи КАК ВТНормыВыдачи левое СОЕДИНЕНИЕ ВТСпецодеждаВНаличии КАК ВТСпецодеждаВНаличии ПО (ВТСпецодеждаВНаличии.ФизЛицоДополнениеДолжности = ВТНормыВыдачи.ДополнениеДолжности) И (ВТСпецодеждаВНаличии.ВидСпецодежды = ВТНормыВыдачи.Номенклатура) УПОРЯДОЧИТЬ ПО //ВТСпецодеждаВНаличии.ФизЛицоДополнениеДолжности.Наименование, ВТСпецодеждаВНаличии.ФизЛицо.Наименование, ВТСпецодеждаВНаличии.ВидСпецодежды.Наименование Спасибо. |
|||
1
Ногаминебить
02.06.23
✎
14:40
|
ЕстьНулл напрашивается.
|
|||
2
Масянька
02.06.23
✎
14:42
|
+(1) Забыла добавить: а вот лишние строки из таблицы 2 не должны попадать (нет номенклатуры в таблице 1).
|
|||
3
Галахад
02.06.23
✎
14:43
|
А чем (0) не устраивает?
|
|||
4
Ногаминебить
02.06.23
✎
14:45
|
Соединяем вторую таблицу с первой дабы выцепить всю положенную одежку каждой фамилии с должностью. Потом результат снова со второй. Если конечно я верно понял что там такое есть и надо.
|
|||
5
Масянька
02.06.23
✎
14:47
|
(4) Вот пробую...
|
|||
6
Масянька
02.06.23
✎
14:55
|
Индейская изба...
ВЫБРАТЬ ВТСпецодеждаВНаличии.ФизЛицо, ВТСпецодеждаВНаличии.ФизЛицоДополнениеДолжности, ВТСпецодеждаВНаличии.ВидСпецодежды, ВТСпецодеждаВНаличии.КоличествоОстаток, ВТСпецодеждаВНаличии.ДокументПередачиДата, ВТНормыВыдачи.Количество, ВТНормыВыдачи.СрокИспользования ИЗ ВТСпецодеждаВНаличии КАК ВТСпецодеждаВНаличии ЛЕВОЕ СОЕДИНЕНИЕ ВТНормыВыдачи КАК ВТНормыВыдачи ПО ВТСпецодеждаВНаличии.ФизЛицоДополнениеДолжности = ВТНормыВыдачи.ДополнениеДолжности И ВТСпецодеждаВНаличии.Номенклатура = ВТНормыВыдачи.Номенклатура УПОРЯДОЧИТЬ ПО ВТСпецодеждаВНаличии.ФизЛицо.Наименование, ВТСпецодеждаВНаличии.ВидСпецодежды.Наименование Попадают лишние (из остатков) и нет кол-ва и срока из норм. |
|||
7
Ногаминебить
02.06.23
✎
14:59
|
Ну и где тут 2 итерации?
Тащим из второй Фамилию должность, из первой одежду количество срок соединяя по полю должность, это все во временную. Потом результат снова со второй по полю фамилия должность и добиваем остатком и сроком. |
|||
8
Масянька
02.06.23
✎
14:59
|
+ (6) Не, по-моему, со строками все норм (то что надо), но значения 1 таблицы не выводятся...
|
|||
9
Масянька
02.06.23
✎
14:59
|
(7) Я первую делаю.
|
|||
10
Ногаминебить
02.06.23
✎
15:00
|
(7)+ сроком и остатком добиваем где оный есть, а в остальных случаях естьнулл.
|
|||
11
Ногаминебить
02.06.23
✎
15:01
|
В 6 По Номенклатура лишнее
|
|||
12
Масянька
05.06.23
✎
10:07
|
(11) Спасибо!
|
|||
13
Guk
05.06.23
✎
10:12
|
рукалицо...
|
|||
14
novichok79
05.06.23
✎
12:23
|
мда............. рукалицо.
как же вы в типовых копаетесь? там же такие запросищи. давно на 1С не писал, но попробую. сначала получить данные которые надо вычесть, положить во временную таблицу, потом левым соединением ее к той таблице, где записей не должно быть и в где убрать эти строки по is null. |
|||
15
novichok79
05.06.23
✎
12:34
|
в остальном - обычно статичные данные (номенклатура, люди, и т д) присоединяются к данным, которые не статичны (остатки).
остатки при этом выводят в таблицу обычно через isnull. ну и надо не забывать про дублируемость данных, перед соединением таблиц лучше их поагрегировать, чтобы не было ситуации когда в левой таблице 1 строка матчится на 2 в другой. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |