|
Разность таблиц в запросе по двум полям | ☑ | ||
---|---|---|---|---|
0
Chum
09.06.14
✎
14:32
|
Вводная:
УПП Есть регистр накопления "Реестр", где измерения "Заказ" и "Договор". Есть документ "Заявка на расходование средств" с табличной частью "РасшифровкаПлатежа", где есть реквизиты "Ссылка" (aka Заказ) и "ДоговорКонтрагента". Нужно получить таблицу с полями Заказ|Договор, куда войдут все документы Заказ, которые не фигурируют в регистре. Нацарапал черновик запроса, а как поставить условие по двум параметрам? Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеестрЗаявокНаПлатежОстатки.Заявка, | РеестрЗаявокНаПлатежОстатки.Договор |ПОМЕСТИТЬ ЗаявкиВРеестре |ИЗ | РегистрНакопления.РеестрЗаявокНаПлатеж.Остатки(&ДатаЗапроса, ) КАК РеестрЗаявокНаПлатежОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка КАК Заявка, | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента КАК Договор |ИЗ | Документ.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа | |СГРУППИРОВАТЬ ПО | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка, | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента"; |
|||
1
Крошка Ру
09.06.14
✎
14:35
|
Левое соединение "Расшифровка платежа" с "Реестром" по заказу и договору, где Реестр.заказ EСТЬNULL
|
|||
2
Chum
09.06.14
✎
14:42
|
(1) Спасибо, но можно ли пример? В запросах нуб, поэтому даже особо не понимаю нужны ли здесь временные таблицы
|
|||
3
Ёпрст
09.06.14
✎
14:46
|
(2)
выбрать * ИЗ ЗаявкиВРеестре как ЗаявкиВРеестре внутреннее соединение Документ.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа по ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка <> РеестрЗаявокНаПлатежОстатки.Заявка и ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента = РеестрЗаявокНаПлатежОстатки.Договор |
|||
4
Крошка Ру
09.06.14
✎
14:47
|
(3) Не внутреннее. Так выберет те заказы, которые есть в реестре
|
|||
5
Крошка Ру
09.06.14
✎
14:48
|
+(4) вернее вообще пустой вернет, т.к. условие "<>"
|
|||
6
Chum
09.06.14
✎
14:48
|
?
"ВЫБРАТЬ | РеестрЗаявокНаПлатежОстатки.Заявка, | РеестрЗаявокНаПлатежОстатки.Договор |ПОМЕСТИТЬ ЗаявкиВРеестре |ИЗ | РегистрНакопления.РеестрЗаявокНаПлатеж.Остатки(&ДатаЗапроса, ) КАК РеестрЗаявокНаПлатежОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка КАК Заявка, | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента КАК Договор |ПОМЕСТИТЬ ЗаявкиВсе |ИЗ | Документ.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа | |СГРУППИРОВАТЬ ПО | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка, | ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЗаявкиВсе.Заявка, | ЗаявкиВсе.Договор |ИЗ | ЗаявкиВсе КАК ЗаявкиВсе | ЛЕВОЕ СОЕДИНЕНИЕ ЗаявкиВРеестре КАК ЗаявкиВРеестре | ПО (ЗаявкиВРеестре.Заявка = ЗаявкиВсе.Заявка) | И (ЗаявкиВРеестре.Договор = ЗаявкиВсе.Договор) |ГДЕ | ЗаявкиВРеестре.Заявка ЕСТЬ NULL | И ЗаявкиВРеестре.Договор ЕСТЬ NULL "; |
|||
7
Ёпрст
09.06.14
✎
14:49
|
(4) да, наеборот надо, копи-пасте же :)
выбрать * ИЗ Документ.ЗаявкаНаРасходованиеСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа внутреннее соединение ЗаявкиВРеестре как ЗаявкиВРеестре по ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.Ссылка <> РеестрЗаявокНаПлатежОстатки.Заявка и ЗаявкаНаРасходованиеСредствРасшифровкаПлатежа.ДоговорКонтрагента = РеестрЗаявокНаПлатежОстатки.Договор |
|||
8
Крошка Ру
09.06.14
✎
14:50
|
(6) Да. Только последнее условие можно убрать.
|
|||
9
Крошка Ру
09.06.14
✎
14:50
|
(7) Прочитай внимательнее (0)
|
|||
10
Chum
09.06.14
✎
14:51
|
(8) ок. спасибо.
|
|||
11
Ёпрст
09.06.14
✎
14:54
|
(9) и ?
|
|||
12
Ёпрст
09.06.14
✎
14:57
|
а ну да, туплю
|
|||
13
Ёпрст
09.06.14
✎
14:58
|
Хотя нет, заморочил мне голову..
|
|||
14
Крошка Ру
09.06.14
✎
15:08
|
(13) Нужны те заказы, которых нет в Реестре, у тебя - те заказы которые есть или там, или там (при этом соединение по договору)
|
|||
15
Ёпрст
09.06.14
✎
15:53
|
(14) и ? не равно по договору еще.. делов то, твой лефт джоин - тот-же иннер
|
|||
16
Крошка Ру
09.06.14
✎
16:40
|
(15) Не равно по договору в условии соединения?
|
|||
17
Ёпрст
09.06.14
✎
16:46
|
(16) да и по ссылке
|
|||
18
Крошка Ру
09.06.14
✎
16:48
|
(17) То есть запрос вытащит все заказы из регистра "Реестр", договоры по которым не встречаются в ТЧ "Расшифровка"?
|
|||
19
Ёпрст
09.06.14
✎
17:06
|
Наеборот, вытащит все документы, которых нет на остатке, что и нужно в (0)
|
|||
20
Крошка Ру
09.06.14
✎
17:13
|
(19) Да ты сам подумай)) Нужно вытащить все данные из одной таблицы и убрать из них те, которые есть в другой. А у тебя внутреннее (то есть симметричное) соединение. Как запрос сообразит из какой таблицы брать данные, а из какой отбрасывать?
|
|||
21
Ёпрст
10.06.14
✎
10:05
|
(20) см (12), есть такое, там кросс джоин выйдет
:))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |