Левое соединение работает как ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ -Магия?

1. Ujine1313 10 15.11.23 11:41 Сейчас в теме
|ВЫБРАТЬ
		|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник
		|ПОМЕСТИТЬ РаботающиеСотрудники
		|ИЗ
		|	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
		|ГДЕ
		|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	Расш1_Команда.Сотрудник КАК Сотрудник
		|ПОМЕСТИТЬ ВТ_Команда
		|ИЗ
		|	РегистрСведений.Расш1_Команда КАК Расш1_Команда
		|ГДЕ
		|	Расш1_Команда.Сотрудник = &Сотрудник
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_Команда.Сотрудник КАК Сотрудник,
		|	РаботающиеСотрудники.Сотрудник КАК Сотрудник1
		|ИЗ
		|	РаботающиеСотрудники КАК РаботающиеСотрудники
		|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Команда КАК ВТ_Команда
		|		ПО РаботающиеСотрудники.Сотрудник = ВТ_Команда.Сотрудник
		|
Показать

Результат см скрин.
Прикрепленные файлы:
Найденные решения
16. soft_wind 15.11.23 12:56 Сейчас в теме
(14)
у вас такая ситуация
2(Строки) * 1 (Строка) = 2 Строки

вы переделали запрос, стало так
1 (Строка) * 2(Строки) = 2 Строки

иногда бывают "кривые"/неправильные данные,
по неправильным данным вы получите неправильный результат! - это же аксиома

возможно ошибка как раз в том что Иванов входит одновременно в несколько команд
исправьте это! что бы Иванов был только в одной команде и вы получите правильный результат
без команды - Различные
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 15.11.23 11:43 Сейчас в теме
(1)
Должна быть одна запись
Обоснуй.
3. Ujine1313 10 15.11.23 11:44 Сейчас в теме
(2)В Левой таблице одна запись. в правой две. Значит итоговая должна быть одна.
Где логика если левая таблица дописывается записью из правой.
4. Sashares 35 15.11.23 11:57 Сейчас в теме
(3)В этом как бы и смысл.
RTFM, все такое.
Левое соединение - для каждой строки левой таблицы выполняется соединение с каждой строкой правой таблицы по заданному условию.
То что это не соответствует вашим ожиданиям, это уже немного другое.

Если в правой таблице будет Петров, строки с ним не будет в результирующей таблице.
Дмитрий74Чел; +1 Ответить
6. Ujine1313 10 15.11.23 12:27 Сейчас в теме
(4)
для каждой строки левой таблицы выполняется соединение с каждой строкой правой таблицы

Так в левой одна строка. В правой две. Вторая запись то откуда тогда появляется в итоговой если опорная таблица с одной записью.
7. Sashares 35 15.11.23 12:29 Сейчас в теме
(6)
Еще раз.
для каждой строки левой таблицы выполняется соединение с каждой строкой правой таблицы.

Это означает буквально следующее:

Первая строка левой соединяется с первой строкой правой, если условие подошло, результат соединения будет результате запроса.
Первая строка левой соединяется со второй строкой правой, если условие подошло, результат соединения будет результате запроса.
...
Первая строка левой соединяется со N строкой правой, если условие подошло, результат соединения будет результате запроса.

Вторая строка левой соединяется с первой строкой правой, если условие подошло, результат соединения будет результате запроса.
Вторая строка левой соединяется со второй строкой правой, если условие подошло, результат соединения будет результате запроса.
...
Вторая строка левой соединяется со N строкой правой, если условие подошло, результат соединения будет результате запроса.
...
N строка левой соединяется со N строкой правой, если условие подошло, результат соединения будет результате запроса.
9. Ujine1313 10 15.11.23 12:31 Сейчас в теме
(7)Соединение ЛЕВОЕ. Для каждой строки левой таблице ищется строка правой таблицы по условию соединения. в Левой одна строка.
10. Sashares 35 15.11.23 12:33 Сейчас в теме
(9)А нашлось в правой 2 строки подходящие, обе попали в результат.
12. nomad_irk 76 15.11.23 12:47 Сейчас в теме
(10)ШОК КОНТЕНТ!!!! СМОТРЕТЬ ДО КОНЦА!!!!1111
13. Ujine1313 10 15.11.23 12:48 Сейчас в теме
(10)к такому жизнь меня не готовила)
15. nomad_irk 76 15.11.23 12:52 Сейчас в теме
(13)что не понятно в предложении из (7):
для каждой строки левой таблицы выполняется соединение с каждой строкой правой таблицы

?
17. spacecraft 15.11.23 14:49 Сейчас в теме
(1) читайте документацию:
https://its.1c.ru/db/v8323doc#bookmark:dev:TI000000471
Левое внешнее соединение означает, что в результат запроса нужно включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Но, в отличие от внутреннего соединения, в результат запроса нужно включить также еще и записи из первого (указанного слева от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из второго источника.
5. soft_wind 15.11.23 12:06 Сейчас в теме
у вас просто несколько команд (2 шт) где состоит Иванов

а дальше идет обычное перемножение строк

(это не соединения виноваты, это просто неправильно запрос написан)
8. Ujine1313 10 15.11.23 12:30 Сейчас в теме
(5)
ВЫБРАТЬ
	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник
ИЗ
	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Команда КАК Расш1_Команда
		ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = Расш1_Команда.Сотрудник)
ГДЕ
	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник
Показать


Результат такой же
11. soft_wind 15.11.23 12:45 Сейчас в теме
(8) Попробуйте так
ВЫБРАТЬ различные
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Расш1_Команда КАК Расш1_Команда
ПО (КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = Расш1_Команда.Сотрудник)
ГДЕ
КадроваяИсторияСотрудниковСрезПоследних.Сотрудник = &Сотрудник
Показать
14. Ujine1313 10 15.11.23 12:49 Сейчас в теме
(11)
различные


(11)
ВЫБРАТЬ различные

Так останется одна согласен..вопрос был как так без этой конструкции.
16. soft_wind 15.11.23 12:56 Сейчас в теме
(14)
у вас такая ситуация
2(Строки) * 1 (Строка) = 2 Строки

вы переделали запрос, стало так
1 (Строка) * 2(Строки) = 2 Строки

иногда бывают "кривые"/неправильные данные,
по неправильным данным вы получите неправильный результат! - это же аксиома

возможно ошибка как раз в том что Иванов входит одновременно в несколько команд
исправьте это! что бы Иванов был только в одной команде и вы получите правильный результат
без команды - Различные
18. osa92 66 15.11.23 16:00 Сейчас в теме
Сгруппируй по сотруднику и будет тебе счастье!
19. Ujine1313 10 15.11.23 16:23 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот