|
Запрос - сравнение 2-х таблиц | ☑ | ||
---|---|---|---|---|
0
ws_mason
25.10.12
✎
16:16
|
Есть две таблицы.
Как запросом вывести строки которые есть в 1-ой и отсутствуют во 2-ой. |
|||
1
Конфигуратор1с
25.10.12
✎
16:17
|
(0)баян
|
|||
2
GLazNik
25.10.12
✎
16:18
|
(0) левое соединение и условие на NULL
|
|||
3
vmv
25.10.12
✎
16:18
|
руководсво разработчика часть 1
бегом-бегом |
|||
4
ws_mason
25.10.12
✎
16:24
|
Конкретизирую, вот запрос:
ВЫБРАТЬ ВыплатаТаблицаДокумента.Сотрудник, ВыплатаТаблицаДокумента.Сумма, ЕСТЬNULL(ЛицевыеСчета.Наименование, """") КАК ЛицевойСчет ИЗ Документ.Выплата.ТаблицаДокумента КАК ВыплатаТаблицаДокумента ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЛицевыеСчета КАК ЛицевыеСчета ПО ВыплатаТаблицаДокумента.Сотрудник = ЛицевыеСчета.Владелец.Ссылка ГДЕ ВыплатаТаблицаДокумента.Ссылка = &ТекущийДокумент И ЛицевыеСчета.Банк = &Банк в результате, те кто, имеет счет в &Банке попадает в мою табличку, а кто нет пролетает, вот тех кто не попал, надо показать отдельно. |
|||
5
ws_mason
25.10.12
✎
16:25
|
&ТекущийДокумент - заданный через параметр документ выплаты
&Банк - заданный через параметр банк |
|||
6
1Страх
25.10.12
✎
16:28
|
ВЫБРАТЬ
ВыплатаТаблицаДокумента.Сотрудник, ВыплатаТаблицаДокумента.Сумма, ЕСТЬNULL(ЛицевыеСчета.Наименование, """") КАК ЛицевойСчет ИЗ Документ.Выплата.ТаблицаДокумента КАК ВыплатаТаблицаДокумента ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЛицевыеСчета КАК ЛицевыеСчета ПО ВыплатаТаблицаДокумента.Сотрудник = ЛицевыеСчета.Владелец И ЛицевыеСчета.Банк = &Банк ГДЕ ВыплатаТаблицаДокумента.Ссылка = &ТекущийДокумент И ЛицевыеСчета.Владелец ЕСТЬ NULL |
|||
7
GLazNik
25.10.12
✎
16:28
|
(4) а подумать? не?
Условие ЛицевыеСчета.Банк = &Банк говорит о том, что в окончательной выборке будут только строки с лицевыми счетами в банке &Банк. а тебе нужны строки в которых ЛицевыеСчета.Банк есть NULL. если же тебя интересуют лицевые счета конкретного банка, то перенеси условие ЛицевыеСчета.Банк = &Банк в соединение |
|||
8
ws_mason
25.10.12
✎
16:32
|
(7) не думается, у меня уже 20-30, а завтра надо чтобы работало.
|
|||
9
GLazNik
25.10.12
✎
16:36
|
(8) время то еще детское, что б думалку выключало...
|
|||
10
ws_mason
25.10.12
✎
16:40
|
С учетом (6) переписал
ВЫБРАТЬ ВыплатаТаблицаДокумента.Сотрудник, ВыплатаТаблицаДокумента.Сумма, ЕСТЬNULL(ЛицевыеСчета.Наименование, """") КАК ЛицевойСчет ИЗ Документ.Выплата.ТаблицаДокумента КАК ВыплатаТаблицаДокумента ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЛицевыеСчета КАК ЛицевыеСчета ПО ВыплатаТаблицаДокумента.Сотрудник = ЛицевыеСчета.Владелец И ЛицевыеСчета.Банк = &Банк ГДЕ ВыплатаТаблицаДокумента.Ссылка = &ТекущийДокумент И ЛицевыеСчета.Владелец ЕСТЬ NULL Получился список сотрудников без лицевых счетов в указанном банке. Теперь бы объединить все в один запрос, чтобы если счет в указанном банке есть, то он выводился бы если нет то пустое значение. |
|||
11
ws_mason
25.10.12
✎
16:41
|
(6) Спасибо!
|
|||
12
GLazNik
25.10.12
✎
16:45
|
(10) так уберите последнюю строку... и будет вам счастье...
|
|||
13
1Страх
25.10.12
✎
16:46
|
(10) а это вообще через ВЫБОР КОГДА ТОГДА делается
|
|||
14
GLazNik
25.10.12
✎
16:47
|
(13) это уже сделано через ЕСТЬNULL(ЛицевыеСчета.Наименование, """")
|
|||
15
1Страх
25.10.12
✎
16:48
|
(14) аа
|
|||
16
ws_mason
26.10.12
✎
08:16
|
Сегодня с утречка, отдохнувши, родил:
ВЫБРАТЬ ВыплатаТаблицаДокумента.Сотрудник, ВыплатаТаблицаДокумента.Сумма, ЕСТЬNULL(ЛицевыеСчета.Наименование, "") КАК ЛицевойСчет ИЗ Документ.Выплата.ТаблицаДокумента КАК ВыплатаТаблицаДокумента ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ЛицевыеСчета КАК ЛицевыеСчета ПО ВыплатаТаблицаДокумента.Сотрудник = ЛицевыеСчета.Владелец И ЛицевыеСчета.Банк = &Банк ГДЕ ВыплатаТаблицаДокумента.Ссылка = &ТекущийДокумент УПОРЯДОЧИТЬ ПО ВыплатаТаблицаДокумента.Сотрудник.Наименование Теперь все ОК. Если счет в &Банке, то он попадает в табличку, если нет, то пустое значение счета. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |