|
Вопрос по Левому соединению | ☑ | ||
---|---|---|---|---|
0
3axap_4
17.09.13
✎
12:21
|
Добра.
Есть запрос ВЫБРАТЬ РеализацияТоваровУслуг.Ссылка ПОМЕСТИТЬ Табл ИЗ БизнесПроцесс.CRM_АгентскаяСхема КАК CRM_АгентскаяСхема ЛЕВОЕ СОЕДИНЕНИЕ Задача.Задача_Агентская_Схема КАК Задача_Агентская_Схема ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО Задача_Агентская_Схема.ОбъектДействие = РеализацияТоваровУслуг.Сделка ПО CRM_АгентскаяСхема.Ссылка = Задача_Агентская_Схема.БизнесПроцесс И (Задача_Агентская_Схема.Выполнена) ГДЕ CRM_АгентскаяСхема.Основание = &Основание И Задача_Агентская_Схема.ТочкаМаршрута = &Этап3 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Табл.Ссылка КАК Документ ИЗ Задача.Задача_Агентская_Схема.СписокДокументов КАК Задача_Агентская_СхемаСписокДокументов ЛЕВОЕ СОЕДИНЕНИЕ Табл КАК Табл ПО (Задача_Агентская_СхемаСписокДокументов.Ссылка.Выполнена) И (Задача_Агентская_СхемаСписокДокументов.Ссылка.ТочкаМаршрута = &Этап2) И (ЕСТЬNULL(Задача_Агентская_СхемаСписокДокументов.Документ.Ссылка, &ПустаяСсылка) <> Табл.Ссылка) ГДЕ (НЕ Табл.Ссылка ЕСТЬ NULL ) СГРУППИРОВАТЬ ПО Табл.Ссылка Как в слачае если во втором пакете таблица Задача_Агентская_СхемаСписокДокументов пустая перетянуть значения из таблицы первого пакета? Спасиб |
|||
1
Rie
17.09.13
✎
12:23
|
(0) ЕСТЬNULL - замечательная функция...
|
|||
2
cw014
17.09.13
✎
12:25
|
Внутреннее соединение у тебя, а не левое
|
|||
3
3axap_4
17.09.13
✎
12:32
|
(2) Внутреннее тоже не помогает
|
|||
4
exwill
17.09.13
✎
12:37
|
(3) Тогда - правое соединение или ...
левое, но с перестановкой таблиц. |
|||
5
3axap_4
17.09.13
✎
12:42
|
(4) но тогда будут попадать все записи из таблицы первого пакета, а мне нужны только те которые есть в таблице первого пакета и нет в таблице второго, соответственно если таблица второго пакета пуста, должны отбираться все записи из таблицы первого пакета
|
|||
6
catena
17.09.13
✎
12:43
|
(5) либо тут:
" (НЕ Табл.Ссылка ЕСТЬ NULL ) " либо тут: "и нет в таблице второго" ты врешь. |
|||
7
exwill
17.09.13
✎
12:44
|
(5) Добавь условие на NULL.
|
|||
8
3axap_4
17.09.13
✎
12:45
|
(6)(НЕ Табл.Ссылка ЕСТЬ NULL ) фильтрует null's из первыой таблицы, удаление этого пункта из запроса на результат не влияет
|
|||
9
3axap_4
17.09.13
✎
12:46
|
(7) куда?
|
|||
10
exwill
17.09.13
✎
12:52
|
(9)
1. Меняй таблицы местами или ставь ПРАВОЕ соединение. 2. Ставь условие типа: Задача.Задача_Агентская_Схема.СписокДокументов.Поле ЕСТЬ NULL |
|||
11
catena
17.09.13
✎
13:02
|
(8)При левом соединении у тебя в первой таблице не может быть NULL-ов.
|
|||
12
3axap_4
17.09.13
✎
13:21
|
(11) таблица из второго пакета может быть пустой, в этом случае не получается соеденение с таблицей из первого пакета, значения которой по идее должны полностью перенестись
|
|||
13
3axap_4
17.09.13
✎
13:48
|
(10) поставил, но там не null видимо, левое соединение нормально отрабатывает если в таблице второго пакета есть хоть одна запись
|
|||
14
IKSparrow
17.09.13
✎
14:31
|
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ... ВЫБРАТЬ РАЗЛИЧНЫЕ ... из левой таблицы.
|
|||
15
3axap_4
17.09.13
✎
15:16
|
(14) Не пошло...
|
|||
16
catena
17.09.13
✎
15:27
|
(15)Подожди, а это что за условие???
И (ЕСТЬNULL(Задача_Агентская_СхемаСписокДокументов.Документ.Ссылка, &ПустаяСсылка) <> Табл.Ссылка) |
|||
17
3axap_4
17.09.13
✎
15:33
|
(16) это я практиковался, выложил промежуточную версию запроса=) сейчас без него.... но все равно не пашетъ
|
|||
18
Sabbath
17.09.13
✎
15:43
|
(0) Не совсем задача и формулировки ясны, если честно. Как-т осумбурно.
Напиши пример: есть две таблицы (результата запроса) с такими-то полями, нужно получить то-то |
|||
19
catena
17.09.13
✎
15:50
|
(17)Если совсем без него, то у тебя логично хоть одна запись второй таблицы(подходящая по условиям) распространиться на все записи первой. Разберись, по каким реквизитам должна связь стоять.
|
|||
20
3axap_4
17.09.13
✎
16:06
|
(18)(19) есть 2 таблицы:
1 - отбраются РТУ (тип ссылка) 2 - отбираются РТУ из табличной части задачи бизнес процесса (тип ссылка). делаю левое соединение по полю (тип ссылка РТУ) нужно отобрать РТУ которые не фигурировали в завершенных задачах бизнес процесса на определенном этапе. в моем случае получается если РТУ не фигурировали, то 2-я таблица получается пустой и при левом соединении из первой не перетягиваются нужные значения. |
|||
21
Sabbath
17.09.13
✎
16:19
|
(20) по идее тебе надо сначала получить то, что фигурировало, и уже это, соединить по ссылке и в условии прописать есть null, либо сразу в условие к первой таблице поставить
НЕ В (выбрать ... тут то, что фигурирует в задачах на определенном этапе). |
|||
22
3axap_4
17.09.13
✎
16:46
|
(21) 100%%
Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |