Имя: Пароль:
1C
1С v8
В чем отличие полного соединения от левого
0 AlfaDog
 
25.09.13
14:58
Есть такой запрос

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО (ИСТИНА)
ГДЕ
    СобытияОС.Ссылка = &Ссылка

и еще один


ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО (ИСТИНА)
ГДЕ
    СобытияОС.Ссылка = &Ссылка


Результат выдют один и тот же , так в чем отличие соединений?
1 AlfaDog
 
25.09.13
14:59
Запрос чисто для примера
2 GROOVY
 
25.09.13
15:00
У тебя тут абзац-пример. Тут нет соединений, тут безусловная связь двух таблиц: Все со всеми.
3 GROOVY
 
25.09.13
15:01
Собстно:

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС,
    Справочник.СобытияОС КАК СобытияОС1
ГДЕ
    СобытияОС.Ссылка = &Ссылка
4 catena
 
25.09.13
15:04
"ПО (ИСТИНА)" - с чего бы им различаться-то?
5 AlfaDog
 
25.09.13
15:05
Блин че то я туплю, но все равно не вьезжаю
6 Asmody
 
25.09.13
15:09
(5) реляционную алгебру знаешь?
7 Ненавижу 1С
 
гуру
25.09.13
15:10
лучше сравни

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО ЛОЖЬ

и

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО ЛОЖЬ
8 AlfaDog
 
25.09.13
15:13
(7) Спасибо


То есть значит полное соединеие добавляет поля, где условие связи не выполняется
9 Зойч
 
25.09.13
15:13
смысл правого соединения справочника самого с собой?
10 catena
 
25.09.13
15:16
(8)В конструкторе на закладке "Связи" по галочкам очень хорошо разница видна.
11 AlfaDog
 
25.09.13
15:29
Тогда не понятно почему эти 2 запроса выдют тоже одинаковый результат

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО СобытияОС.Ссылка = СобытияОС1.Ссылка

И

ВЫБРАТЬ
    СобытияОС.Ссылка,
    СобытияОС1.Ссылка КАК Ссылка1
ИЗ
    Справочник.СобытияОС КАК СобытияОС
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО СобытияОС.Ссылка = СобытияОС1.Ссылка
12 AlfaDog
 
25.09.13
15:29
Если условие связи не выполняется
13 GROOVY
 
25.09.13
15:29
https://www.google.ru/search?q=левое+соединение
14 vzuperman
 
25.09.13
15:30
(0)
с 1с давно работаешь?
15 Ненавижу 1С
 
гуру
25.09.13
15:30
(12) условие связи здесь ВСЕГДА выполняется, сам подумай
16 AlfaDog
 
25.09.13
15:32
(12) как это всегда


Я ожидал п олном увидить таблицу типа


Элемент1   Элемент1

NULL        Элемент2

NULL        Элемент3
17 ОфисныйБабай
 
25.09.13
15:34
мне кажется или ТС из одного и того же справочника выбирает данные, только псевдонимы им разные дает? поэтому у него и получаются одинаковые данные.
(0) смотри, постараюсь объяснить тебе на пальцах.
к примеру мы имеем справочник сотрудников и регистр сведений должностей. Не на всех должностях есть люди. Ну и так получилось, что еще не всем людям назначена должность.
Выбирая людей из справочника и должности из РС ставим правое соединение по справочнику. получаем ВСЕ записи справочника и соответствующие им записи регистра.
Если ставим полное соединение, то получаем ВСЕ записи справочника и ВСЕ записи регистра. Как то так
18 viktor_vv
 
25.09.13
15:38
(11) Я вот не понял, это ты соединяешь один и тот же справочник самим с собой, и чему тогда удивляешься.
19 viktor_vv
 
25.09.13
15:39
(17) Да. Я только сейчас увидел.
20 ОфисныйБабай
 
25.09.13
15:39
+(17)
иванов   админ
петров   директор
Null     менеджер
Null     специалист
сидоров  null

это полное.

Иванов админ
петров директор
Сидоров null

это правое по справочнику.
21 AlfaDog
 
25.09.13
15:43
(18) Причем здесь вообще один справочник или нет ,

у нас 2 таблицы получаются мы их соединяем по услвовию, и какая разница из одного они справочника получены или нет
22 Ненавижу 1С
 
гуру
25.09.13
15:44
(16) почему это?
23 Fragster
 
модератор
25.09.13
15:45
(3) а твой пример может дать другой результат
24 Fragster
 
модератор
25.09.13
15:45
(23)+ не конкретно этот, две разные таблицы нужны, да
25 catena
 
25.09.13
15:45
(21)Две таблицы с абсолютно одинаковым набором данных.
26 catena
 
25.09.13
15:47
(16)А куда ж у тебя из первой таблицы должны пропасть Элемент2 и Элемент3?
27 Ненавижу 1С
 
гуру
25.09.13
15:47
(24) необязательно, см (7)
28 ОфисныйБабай
 
25.09.13
15:47
(21) из одного и того же справочника ты не получишь разные таблицы данных. блин, прогуляйся пойди, свежим воздухом подыши. мне например в самых безвыходных ситуациях помогает чайку выпить.
29 AlfaDog
 
25.09.13
15:48
(21)Потому что имеем 2 таблицы , хоть и одинаковые . но мы то соединяем их по условию.  И тогда я ожидаю что при ПОЛНОМ соединении возьмуться все строки из первой и все строки из второй , где условие связи не идет должен быть NULL но почему то результат другой
30 catena
 
25.09.13
15:49
(29)Опиши катаклизмы, при которых справочник сам у себя свою же ссылку не найдет.
31 viktor_vv
 
25.09.13
15:50
(29) так в том-то и дело, что в примере (11) условие связи всегда выполнится.
32 AlfaDog
 
25.09.13
15:51
Извините, до меня всегда все долго доходит =)
33 ptiz
 
25.09.13
15:51
(29) Включи логику.
Как работает левое соединение:
берем строку 1 из "левой" таблицы и бежим по строкам из "правой". При пробегании каждой строки проверяем условие соединения. Если оно выполняется, добавляем строку в результат (поля из обеих таблиц) - у тебя указана "ИСТИНА", поэтому всегда берутся все строку.
Если бы условие не выполнялось, то добавилась бы строка с полем из "левой" таблицы, а вместо значений "правой" - null
34 Никола_
Питерский
 
25.09.13
15:52
Мой мозг поломался :)
35 catena
 
25.09.13
15:52
(32)Возьми разные таблицы и связывай.
36 Infsams654
 
25.09.13
15:53
(29) как же в связке таблицы самой собой условия могут не выполняться?
37 Infsams654
 
25.09.13
16:05
(36) а ну да, можно так

ПОЛНОЕ СОЕДИНЕНИЕ Справочник.СобытияОС КАК СобытияОС1
        ПО СобытияОС.Ссылка <> СобытияОС1.Ссылка

ну тогда получим уж очень много всего, неизвестно для чего
38 КонецЦикла
 
25.09.13
16:06
39 Йохохо
 
25.09.13
16:38
(21) чтобы получить Нулл, надо не найти соответствие по Истина. Это сложно)