|
В чем отличие полного соединения от левого | ☑ | ||
---|---|---|---|---|
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) чтобы получить Нулл, надо не найти соответствие по Истина. Это сложно)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |