|
v7: 1SQLITE: Подскажите по запросу? | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
22.03.13
✎
09:53
|
Доброе утро)Необходимо выбрать элементы справочника из табличных частей документов одного вида, с фильтром по дате документа и флагу проведения.
Вот такой запрос: ТекстЗапроса = " |SELECT | ТЧ_заявка.Маршрут as [Маршрут $Справочник._ТТН_База_Маршруты] |FROM | [ДокументСтроки._ТТН_Заявка] as [ТЧ_заявка] | |Left Join [_1S.Journ] as [Журнал] on (ТЧ_Заявка.IDDOC = Журнал.IDDOC) AND (Журнал.DATE Between :НачДата AND :КонДата) AND (Журнал.CLOSED <> '0') | |WHERE | ТЧ_Заявка.IDDOC = Журнал.IDDOC |"; Все работает, но мне кажется что я чего-то недопонимаю. Не могли бы вы прокомментировать? Меня вот это смущает: - В лефт-джойне - чтобы ограничить выборку журнала видом документа пишу: "ТЧ_Заявка.IDDOC = Журнал.IDDOC" - И в условии WHERE, чтобы указать что мне нужны только те таб. части, которые попадают в фильтр джойна тоже пишу: "ТЧ_Заявка.IDDOC = Журнал.IDDOC" Может как-то по другому надо, лучше? |
|||
1
Man4kin
22.03.13
✎
09:56
|
(0) почему не inner join ?
условие |WHERE | ТЧ_Заявка.IDDOC = Журнал.IDDOC мне кажется лишнее. |
|||
2
Ёпрст
22.03.13
✎
09:59
|
(0)
1.where не нужно, заменить лефт джоин на иннер, воткнуть условие на виддокумента для попадания в индекс, (Журнал.CLOSED <> '0') - это не верно, клосет- это нумерик, а не чар |
|||
3
Zhuravlik
22.03.13
✎
10:05
|
"Inner join необходим для получения только тех строк, для которых существует соответствие записей главной таблицы и присоединяемой."
- (1)(2)Получается в FROM должен быть журнал, а иннером я присоединяю строки? - (2)А как получить этот вид? Я пробовал через MetaDataWork, но возвращает его порядковый номер в базе, а руками писать строчку вида не хотелось бы. Можно конечно спозиционироваться на первом документе, и получить вид оттуда (получить строку 13 симв, и вырезать), но мне кажется что все гораздо проще? - (2) Журнал.CLOSED - а работает одинаково, что '0', что 0? |
|||
4
Zhuravlik
22.03.13
✎
13:26
|
Так?
ТекстЗапроса = " |SELECT | ТЧ_заявка.Маршрут as [Маршрут $Справочник._ТТН_База_Маршруты] |FROM | [ДокументСтроки._ТТН_Заявка] as [ТЧ_заявка] | |inner Join [_1S.Journ] as [Журнал] on (ТЧ_Заявка.IDDOC = Журнал.IDDOC) AND (Журнал.DATE Between :НачДата AND :КонДата) AND (Журнал.CLOSED <> 0) |"; |
|||
5
Zhuravlik
22.03.13
✎
13:26
|
+ Или Журнал в FROM?
|
|||
6
viktor_vv
22.03.13
✎
13:29
|
Журнал.CLOSED <> 0 у непроведенных может быть и не ноль, там от компонент зависит, в которые включен док.
|
|||
7
Ёпрст
22.03.13
✎
13:30
|
(6) неа
|
|||
8
Ёпрст
22.03.13
✎
13:30
|
от компонент зависит, но 0 - только у непроведенных.
|
|||
9
Ёпрст
22.03.13
✎
13:32
|
|SELECT
| ??_??????.??????? [??????? :??????????._???_????_????????] |FROM | [??????????????._???_??????] as ??_?????? | |inner Join [??????] ??? on ???.iddocdef = :????????????._???_?????? and ??_??????.IDDOC = ???.IDDOC AND ??????.DATE Between :??????? AND :??????? AND ??????.CLOSED <> 0 |
|||
10
Ёпрст
22.03.13
✎
13:32
|
|SELECT
| ТЧ_заявка.Маршрут [Маршрут :Справочник._ТТН_База_Маршруты] |FROM | [ДокументСтроки._ТТН_Заявка] as ТЧ_заявка | |inner Join [Журнал] Жур on Жур.iddocdef = :ВидДокумента._ТТН_Заявка and ТЧ_Заявка.IDDOC = Жур.IDDOC AND Журнал.DATE Between :НачДата AND :КонДата AND Журнал.CLOSED <> 0 |
|||
11
Ёпрст
22.03.13
✎
13:33
|
синтаксис там сам поправишь
|
|||
12
Zhuravlik
22.03.13
✎
13:34
|
(10) Спасибо) :ВидДокумента._ТТН_Заявка - не знал такого.
А если надо шапку дока подключить, это лефт-джойном с условием по ид журнала? |
|||
13
Zhuravlik
22.03.13
✎
13:35
|
+ И алиасы, их же обязательно надо в квадратные скобки закрывать, или нет?
|
|||
14
Ёпрст
22.03.13
✎
13:35
|
ну да, с условием на iddoc
|
|||
15
Ёпрст
22.03.13
✎
13:35
|
(13) нет
|
|||
16
viktor_vv
22.03.13
✎
13:35
|
(8) Какая-то была у меня фигня с этим closed, сейчас не вспомню.
Или я таки не допер до "<>" , а через "=" все время пытался :). |
|||
17
Zhuravlik
22.03.13
✎
13:36
|
(15) А в чем разница при типизации доллара от двоеточия?
|
|||
18
Ёпрст
22.03.13
✎
13:38
|
(17) не надо переключать расскладку клавиатуры (но это только в 1sqlite)
|
|||
19
Zhuravlik
22.03.13
✎
13:39
|
(18) Понял) Спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |