Имя: Пароль:
1C
1С v8
Связь таблиц по условию в запросе
,
0 wade25
 
29.06.12
13:54
Добрый день!

 Соединяю две таблицы в запросе. Необходимо сделать так, что бы если в одной таблице поле было NULL то связть не создавалась. На ум приходит ток насоздавать вложенных с разными вариантами и связать их, как правильней сделать?
1 MaXpaT
 
29.06.12
13:57
По   (Таблица2.Поле1 Есть NULL) или ( Таблица1.Поле1 = Таблица2.Поле1 )
?
2 wade25
 
29.06.12
13:58
(1) Сейчас попробую, спс
3 m-serg74
 
29.06.12
13:59
а так не вариант?
ВЫБОР КОГДА ТвоеПоле IS NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ
4 ssh2006
 
29.06.12
14:09
(0) в условии соединения НЕ ТвоеПоле ЕСТЬ NULL
5 wade25
 
29.06.12
14:34
Не, вот есть 3 связи. Если в одной таблице поле NULL, то связь проходит по оставшимся 2ум..
6 andrewks
 
29.06.12
14:43
по ((т1.поле1=т2.поле1) или (т2.поле1 ЕСТЬ NULL)) (т1.поле2=т2.поле2) и (т1.поле3=т2.поле3)
7 Lama12
 
29.06.12
14:55
(0) Таблицы физические? Или это результаты подзапросов?
8 wade25
 
29.06.12
14:57
(7) Одна из вложенного запроса, другая виртуальная рег св срез
9 wade25
 
29.06.12
14:59
Так не пойдет, ну выбока проходит но оч много задвоенно, кароч на 3 связи 3 вложенных в дальнейшем с исключением по ним получается придется делать*(
10 Lama12
 
29.06.12
15:02
(8) Ну... я бы сделал как в (1) - Таблица2.Поле1 Есть NULL, только перед условием добавил НЕ.
Т.е. одно из условий связи таблиц - НЕ Таблица2.Поле1 Есть NULL. Если это будет одно условие, то получим перемножение значений таблиц с пропуском значений Null.
11 wade25
 
29.06.12
15:04
Ну вот я сделал 3 вложенных. Если после самого нижнего приходит NULL тогда отбрасываем 1 связь и далее до того как останется 1 свзязь) Работает вроде быстро)
12 Ненавижу 1С
 
гуру
29.06.12
15:06
ПО ЕСТЬNULL(Т1.Поле1,Т2.Поле1)=Т2.Поле1
И  ЕСТЬNULL(Т1.Поле2,Т2.Поле2)=Т2.Поле2
И  ЕСТЬNULL(Т1.Поле3,Т2.Поле3)=Т2.Поле3
13 wade25
 
29.06.12
15:08
(12) Может быть, что в 1 таблице NULL а во второй не NULL и наоборот. Т.е. на NULL нужно проверять именно результат соединения
14 Evrepid
 
29.06.12
17:05
Я бы предложил вам сделать выборку из связываемых таблиц, в которых значения NULL заменить на что то определенного типа и уже по этим таблицам выполнять связь.

Думаю, что так можно решить вашу проблему. А связь со значениями определенного типа не проблема
Не (Таблица1.Поле1 = &УстановленноеЗначение
или Таблица2.Поле2 = &УстановленноеЗначение)
и ДругоеУсловие
15 wade25
 
30.06.12
12:43
(15) Та не, создал временную таблицу и из нее по условиям вытащил)
Закон Брукера: Даже маленькая практика стоит большой теории.