powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Убрать соединение с подзапросом
10 сообщений из 10, страница 1 из 1
Убрать соединение с подзапросом
    #37438863
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Подскажите, пожалуйста, как переписать нижеследующее внутреннее соединение с подзапросом, чтобы в результате укладываться в рекомендации, как минимум "не используйте соединения с подзапросами". При этом не потерять производительность!

Краткое человечье описанье:
Выбрать неудалённые Ведомости, которые не присутствуют в неудалённых СписанияхСРасчётногоСчёта в табличной части ПеречислениеЗаработнойПлаты.

Подзапрос Выбирает неудалённые СписанияСРасчётногоСчёта. Соединяется с таблицей своей табличной части ПеречислениеЗаработнойПлаты. С результатом - соединяется Ведомости на ЗП и, если Ведомости при соединении получают NULL, значит - не оплачены.

[sql]
ВЫБРАТЬ
ЛОЖЬ КАК Флаг,
ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
ЗарплатаКВыплатеОрганизаций.Комментарий,
ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
ЗарплатаКВыплатеОрганизаций.Организация,
ЗарплатаКВыплатеОрганизаций.Дата КАК Дата,
ЗарплатаКВыплатеОрганизаций.Ссылка
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
ИЗ
Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
ГДЕ
СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ) КАК ВложенныйЗапрос
ПО (ВложенныйЗапрос.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка)
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
ГДЕ
СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ

УПОРЯДОЧИТЬ ПО
Дата УБЫВ
[/sql]
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37438912
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и сделайте 1 запрос к табличной части с проверкой условия на пометку удаления. Никаких соединений и подзапросов.
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37438957
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВЫБРАТЬ
ЛОЖЬ КАК Флаг,
ЗарплатаКВыплатеОрганизаций.СпособВыплаты,
ЗарплатаКВыплатеОрганизаций.Комментарий,
ЗарплатаКВыплатеОрганизаций.СуммаДокумента,
ЗарплатаКВыплатеОрганизаций.Организация,
ЗарплатаКВыплатеОрганизаций.Дата КАК Дата,
ЗарплатаКВыплатеОрганизаций.Ссылка
ИЗ
Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета ПО СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И СписаниеСРасчетногоСчета.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка
ГДЕ
СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL
УПОРЯДОЧИТЬ ПО
ЗарплатаКВыплатеОрганизаций.Дата УБЫВ


ЗЫ Точка - неявное соединение.
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37438973
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понял???
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37439009
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
	Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
			ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
			ПО (СписаниеСРасчетногоСчета.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка
					И СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ)
	ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка

Правильно понял?
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37439019
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
То есть, в разделе "Связи" как раз и можно устанавливать условия на первичный отбор ДО соединений?
А через две точки:

Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ

?
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37439049
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А когда добавил ещё и
И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ:

Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ


Зависло и не отвечает очень долго... ПачиМу?
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37439066
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Патамушто таблицу забыл убрать... 70000 строк в результате ))

НО! Не работает так:

Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты
ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ

Последнее условие должно обязательно находиться в ГДЕ, иначе никакого эффекта (удалённые ведомости все попадают в выборку):
ГДЕ ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ

ПачиМу?
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37439251
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На всякий случай...
1) По должно стоять сразу за каждым Соединением;
2) .Ссылка. - должно быть аналогично . . По результату - аналогично, а вот по поведению - не помню.
3) В По ограничение отработает на исходные таблицы до обединения, в где - на результате. Т.к. у Вас левое соедеинение, то отсечённые записи левой лаблицы "восстанавливаются" на этапе обединения.
...
Рейтинг: 0 / 0
Убрать соединение с подзапросом
    #37440927
Багер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опять я тупанул... отбирать ведомости, неудалённые, которые не имеются в соединении, если априори - в соединении их не будет, они же удалённые, а в выборку попадут, т.к. в соединении не учавствовали, потому что - удалённые. ПипеЦ!!!

Спасибо, въехал ))
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Убрать соединение с подзапросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]