|
Запрос между двух таблиц | ☑ | ||
---|---|---|---|---|
0
illiona
naïve
02.07.24
✎
05:00
|
Добрый день. Помогите написать запрос. Есть две таблицы , если удержание - исполнительный лист, то смотрим есть ли эта запись в первой таблице по ДокументОснование, если есть запись, то ее оставляем, если нет то она нам не нужна во второй таблице.
Мой запрос: |ВЫБРАТЬ | ВременнаяТаблицаИтог.ЗаданныйПериод КАК ЗаданныйПериод, | ВременнаяТаблицаИтог.ДатаНачалаУдержания КАК ДатаНачалаУдержания, | ВременнаяТаблицаИтог.ДатаОкончанияУдержания КАК ДатаОкончанияУдержания, | ВременнаяТаблицаИтог.Организация КАК Организация, | ВременнаяТаблицаИтог.Сотрудник КАК Сотрудник, | ВременнаяТаблицаИтог.ФизическоеЛицо КАК ФизическоеЛицо, | ВременнаяТаблицаИтог.Удержание КАК Удержание, | ВременнаяТаблицаИтог.ДокументОснование КАК ДокументОснование, | ВременнаяТаблицаИтог.Используется КАК Используется, | ВременнаяТаблицаИтог.Значение КАК Значение, | ВременнаяТаблицаИтог.УдержаниеПроцент КАК УдержаниеПроцент, | ВременнаяТаблицаИтог.РазмерУдержания КАК РазмерУдержания, | ВременнаяТаблицаИтог.ДокументУдержанияДата КАК ДокументУдержанияДата, | ВременнаяТаблицаИтог.ДокументУдержанияНомер КАК ДокументУдержанияНомер, | СТРОКА(ЕСТЬNULL(ВременнаяТаблицаУдержания.ВидРасчета.Наименование, """")) КАК УдержаниеНаименование, | ЕСТЬNULL(ВременнаяТаблицаУдержания.ДокументОснование, """") КАК ДокументОснование1 |ИЗ | ВременнаяТаблицаИтог КАК ВременнаяТаблицаИтог | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаУдержания КАК ВременнаяТаблицаУдержания | ПО (ВременнаяТаблицаИтог.ФизическоеЛицо = ВременнаяТаблицаУдержания.ФизическоеЛицо | И ВременнаяТаблицаИтог.ДокументОснование = ВременнаяТаблицаУдержания.ДокументОснование) |ГДЕ | Выбор КОГДА Строка(ВременнаяТаблицаИтог.Удержание.Наименование) = ""Удержание по исполнительному документу"" Тогда | ЕСТЬNULL(ВременнаяТаблицаУдержания.ДокументОснование, """") <> """" | Иначе ЕСТЬNULL(ВременнаяТаблицаУдержания.ДокументОснование, """") = """" | Конец
|
|||
4
Web00001
02.07.24
✎
05:25
|
(0)>если есть запись, то ее оставляем, если нет то она нам не нужна во второй таблице
Предлагаю тебе, ответить(себе) на вопросы: 1. Оставляем где? 2. Что значит "она нам не нужна во второй таблице"? 3. Каким должен быть результат запроса? Какие колонки из каких таблиц должны получить в третьей таблице - результате запроса. Ты не можешь изменить ни первую ни вторую таблицу. У тебя левое соединение к таблице "ВременнаяТаблицаИтог" значит в результат запроса попадут все записи из этой таблицы. Предлагаю тебе сначала понять, что ты хочешь получить на выходе в результате запроса, а не что ты хочешь "оставить во второй таблице". И если я тебя правильно понял, результатом запроса должны быть записи из таблицы "ВременнаяТаблицаИтог" у которой в поле "ДокументОснование" есть значения из таблицы "ВременнаяТаблицаУдержания" то тогда все верно тебе написали в условии должно быть либо: "НЕ ВременнаяТаблицаУдержания.ДокументОснование ЕСТЬ NULL" либо соединение должно быть внутренним. |
|||
5
illiona
naïve
02.07.24
✎
05:34
|
В результате соединения двух таблиц должен быть результат
Если исполнительный лист есть в первой таблице, то в результате он должен вывестись, если его нет то не должен |
|||
6
illiona
naïve
02.07.24
✎
05:38
|
(4) При внутреннем соединение или при НЕ ВременнаяТаблицаУдержания.ДокументОснование ЕСТЬ NULL в результате остается только одна запись по исполнительному листу, а погашение займа строка не отображается
|
|||
9
Web00001
02.07.24
✎
07:51
|
>Если исполнительный лист есть в первой таблице, то в результате он должен вывестись, если его нет то не должен
Тогда делать ничего не надо. Надо просто вывести поле с исполнительным листом из первой таблицы. Если там исполнительный лист есть, он выведется, если его там нет, то соответственно не выведется, его же там нет |
|||
10
Мультук
гуру
02.07.24
✎
08:32
|
(0)
Вариант 1 Из таблицы ВременнаяТаблицаИтог -- все записи Из таблицы ВременнаяТаблицаУдержания -- только записи для исполнительных листов |ИЗ | ВременнаяТаблицаИтог КАК ВременнаяТаблицаИтог | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаУдержания КАК ВременнаяТаблицаУдержания | ПО (ВременнаяТаблицаИтог.ФизическоеЛицо = ВременнаяТаблицаУдержания.ФизическоеЛицо | И ВременнаяТаблицаИтог.ДокументОснование = ВременнаяТаблицаУдержания.ДокументОснование) | И ВременнаяТаблицаИтог.Удержание.Наименование) = ""Удержание по исполнительному документу"" |ГДЕ | 1 = 1 Вариант 2 Из таблицы ВременнаяТаблицаИтог -- только записи по ""Удержание по исполнительному документу"" Из таблицы ВременнаяТаблицаУдержания -- только записи для исполнительных листов |ИЗ | ВременнаяТаблицаИтог КАК ВременнаяТаблицаИтог | ЛЕВОЕ СОЕДИНЕНИЕ ВременнаяТаблицаУдержания КАК ВременнаяТаблицаУдержания | ПО (ВременнаяТаблицаИтог.ФизическоеЛицо = ВременнаяТаблицаУдержания.ФизическоеЛицо | И ВременнаяТаблицаИтог.ДокументОснование = ВременнаяТаблицаУдержания.ДокументОснование) | |ГДЕ | ВременнаяТаблицаИтог.Удержание.Наименование) = ""Удержание по исполнительному документу"" |
|||
11
Web00001
02.07.24
✎
07:55
|
(4)>результате остается только одна запись по исполнительному листу, а погашение займа строка не отображается
Значит эта строка не подходит под условие ВременнаяТаблицаУдержания.ДокументОснование ЕСТЬ NULL. Логично же? |
|||
12
Web00001
02.07.24
✎
08:00
|
(10)>Из таблицы ВременнаяТаблицаУдержания -- только записи для исполниительных листов
Будет соединение где должны совпасть физлица и документы основания, и в поле ВременнаяТаблицаУдержания.ДокументОснование будет null для документов которых нет в "ВременнаяТаблицаИтог.ДокументОснование", здесь, что не работает? |
|||
13
Мультук
гуру
02.07.24
✎
08:30
|
(12)
1) Мне лень лезть в ЗУП и смотреть правильные ли она написала соединения (документ. физ.лицо) и могут ли быть дубли 2) Я пытаюсь "угадать" что хочет топкпастер Пока она не родит вменяемый пример из трех табличек -- всё бесполезно. Я перечитал сообщения еще раз и понял "что ничего не понял" |
|||
14
АгентБезопасной Нацио
02.07.24
✎
09:01
|
(13) всё потому, что "кто ясно мыслит - тот ясно излагает". А когда даже тема называется "запрос МЕЖДУ двух таблиц", то ничего внятного ожидать не следует...
|
|||
15
mikecool
02.07.24
✎
09:19
|
(0) смотри до просветления
https://www.youtube.com/watch?v=nepj0RvohAw |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |