Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Подскажите, пожалуйста, как переписать нижеследующее внутреннее соединение с подзапросом, чтобы в результате укладываться в рекомендации, как минимум "не используйте соединения с подзапросами". При этом не потерять производительность! Краткое человечье описанье: Выбрать неудалённые Ведомости, которые не присутствуют в неудалённых СписанияхСРасчётногоСчёта в табличной части ПеречислениеЗаработнойПлаты. Подзапрос Выбирает неудалённые СписанияСРасчётногоСчёта. Соединяется с таблицей своей табличной части ПеречислениеЗаработнойПлаты. С результатом - соединяется Ведомости на ЗП и, если Ведомости при соединении получают NULL, значит - не оплачены. [sql] ВЫБРАТЬ ЛОЖЬ КАК Флаг, ЗарплатаКВыплатеОрганизаций.СпособВыплаты, ЗарплатаКВыплатеОрганизаций.Комментарий, ЗарплатаКВыплатеОрганизаций.СуммаДокумента, ЗарплатаКВыплатеОрганизаций.Организация, ЗарплатаКВыплатеОрганизаций.Дата КАК Дата, ЗарплатаКВыплатеОрганизаций.Ссылка ИЗ Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ СписаниеСРасчетногоСчета.Ссылка КАК Ссылка ИЗ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета ГДЕ СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ) КАК ВложенныйЗапрос ПО (ВложенныйЗапрос.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка) ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка ГДЕ СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ УПОРЯДОЧИТЬ ПО Дата УБЫВ [/sql] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 19:28 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Ну и сделайте 1 запрос к табличной части с проверкой условия на пометку удаления. Никаких соединений и подзапросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 20:00 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
ВЫБРАТЬ ЛОЖЬ КАК Флаг, ЗарплатаКВыплатеОрганизаций.СпособВыплаты, ЗарплатаКВыплатеОрганизаций.Комментарий, ЗарплатаКВыплатеОрганизаций.СуммаДокумента, ЗарплатаКВыплатеОрганизаций.Организация, ЗарплатаКВыплатеОрганизаций.Дата КАК Дата, ЗарплатаКВыплатеОрганизаций.Ссылка ИЗ Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета ПО СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И СписаниеСРасчетногоСчета.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ГДЕ СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка ЕСТЬ NULL УПОРЯДОЧИТЬ ПО ЗарплатаКВыплатеОрганизаций.Дата УБЫВ ЗЫ Точка - неявное соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 20:38 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Не понял??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 20:51 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Переделал так: Код: plaintext 1. 2. 3. 4. 5. 6. Правильно понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 21:21 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
То есть, в разделе "Связи" как раз и можно устанавливать условия на первичный отбор ДО соединений? А через две точки: Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 21:30 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
А когда добавил ещё и И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ: Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ Зависло и не отвечает очень долго... ПачиМу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 22:02 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Патамушто таблицу забыл убрать... 70000 строк в результате )) НО! Не работает так: Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций ЛЕВОЕ СОЕДИНЕНИЕ Документ.СписаниеСРасчетногоСчета.ПеречислениеЗаработнойПлаты КАК СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты ПО ЗарплатаКВыплатеОрганизаций.Ссылка = СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ведомость.Ссылка И СписаниеСРасчетногоСчетаПеречислениеЗаработнойПлаты.Ссылка.СписаниеСРасчетногоСчета.ПометкаУдаления = &ЛОЖЬ И ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ Последнее условие должно обязательно находиться в ГДЕ, иначе никакого эффекта (удалённые ведомости все попадают в выборку): ГДЕ ЗарплатаКВыплатеОрганизаций.ПометкаУдаления = &ЛОЖЬ ПачиМу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2011, 22:18 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
На всякий случай... 1) По должно стоять сразу за каждым Соединением; 2) .Ссылка. - должно быть аналогично . . По результату - аналогично, а вот по поведению - не помню. 3) В По ограничение отработает на исходные таблицы до обединения, в где - на результате. Т.к. у Вас левое соедеинение, то отсечённые записи левой лаблицы "восстанавливаются" на этапе обединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2011, 05:21 |
|
||
|
Убрать соединение с подзапросом
|
|||
|---|---|---|---|
|
#18+
Опять я тупанул... отбирать ведомости, неудалённые, которые не имеются в соединении, если априори - в соединении их не будет, они же удалённые, а в выборку попадут, т.к. в соединении не учавствовали, потому что - удалённые. ПипеЦ!!! Спасибо, въехал )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2011, 23:33 |
|
||
|
|

start [/forum/topic.php?fid=28&fpage=74&tid=1521030]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
20ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 315ms |

| 0 / 0 |
