v7: 1SQLITE: Подскажите по запросу? #657573


#0 by Zhuravlik
Доброе утро)Необходимо выбрать элементы справочника из табличных частей документов одного вида, с фильтром по дате документа и флагу проведения. Вот такой запрос: Все работает, но мне кажется что я чего-то недопонимаю. Не могли бы вы прокомментировать? Меня вот это смущает: - В лефт-джойне - чтобы ограничить выборку журнала видом документа пишу: "ТЧ_Заявка.IDDOC = Журнал.IDDOC" - И в условии WHERE, чтобы указать что мне нужны только те таб. части, которые попадают в фильтр джойна тоже пишу: "ТЧ_Заявка.IDDOC = Журнал.IDDOC" Может как-то по другому надо, лучше?
#1 by Man4kin
почему не inner join ? условие    |WHERE    |    ТЧ_Заявка.IDDOC = Журнал.IDDOC мне кажется лишнее.
#2 by Ёпрст
1.where не нужно, заменить лефт джоин на иннер, воткнуть условие на виддокумента для попадания в индекс, (Журнал.CLOSED <> '0') - это не верно, клосет- это нумерик, а не чар
#3 by Zhuravlik
"Inner join необходим для получения только тех строк, для которых существует соответствие записей главной таблицы и присоединяемой." - Получается в FROM должен быть журнал, а иннером я присоединяю строки? - А как получить этот вид? Я пробовал через MetaDataWork, но возвращает его порядковый номер в базе, а руками писать строчку вида не хотелось бы. Можно конечно спозиционироваться на первом документе, и получить вид оттуда (получить строку 13 симв, и вырезать), но мне кажется что все гораздо проще? - Журнал.CLOSED  - а работает одинаково, что '0', что 0?
#4 by Zhuravlik
Так?
#5 by Zhuravlik
+ Или Журнал в FROM?
#6 by viktor_vv
Журнал.CLOSED <> 0 у непроведенных может быть и не ноль, там от компонент зависит, в которые включен док.
#7 by Ёпрст
неа
#8 by Ёпрст
от компонент зависит, но 0 - только у непроведенных.
#9 by Ёпрст
|    |inner Join [??????] ??? on ???.iddocdef = :????????????._???_?????? and ??_??????.IDDOC = ???.IDDOC AND ??????.DATE Between :??????? AND :??????? AND ??????.CLOSED <> 0
#10 by Ёпрст
|    |inner Join [Журнал] Жур on Жур.iddocdef = :ВидДокумента._ТТН_Заявка and ТЧ_Заявка.IDDOC = Жур.IDDOC AND Журнал.DATE Between :НачДата AND :КонДата AND Журнал.CLOSED <> 0
#11 by Ёпрст
синтаксис там сам поправишь
#12 by Zhuravlik
Спасибо) :ВидДокумента._ТТН_Заявка - не знал такого. А если надо шапку дока подключить, это лефт-джойном с условием по ид журнала?
#13 by Zhuravlik
+ И алиасы, их же обязательно надо в квадратные скобки закрывать, или нет?
#14 by Ёпрст
ну да, с условием на iddoc
#15 by Ёпрст
нет
#16 by viktor_vv
Какая-то была у меня фигня с этим closed, сейчас не вспомню. Или я таки не допер до "<>" , а через "=" все время пытался :).
#17 by Zhuravlik
А в чем разница при типизации доллара от двоеточия?
#18 by Ёпрст
не надо переключать расскладку клавиатуры (но это только в 1sqlite)
#19 by Zhuravlik
Понял) Спасибо)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С