|
v7: 1Sqlite: Запрос ругается на GROUP BY | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
18.02.13
✎
22:48
|
Добрый всем вечер) Начал копать поставщик данных SQLite, и вот такой код:
гБаза = СоздатьОбъект("SQLiteBase"); гБаза.Открыть(":memory:"); Поставщик=СоздатьОбъект("SQLiteDataProvider"); Поставщик.УстановитьБД(гБаза); ТекстЗапроса = " |SELECT | ДокПЛ.ссВодитель As [Водитель $Справочник.Сотрудники], | ДокПЛ.саАвтовоз As [Автовоз $Справочник.АВТ_ТранспортныеСредства] |FROM | [Документ.АВТ_ПутевойЛист] as [ДокПЛ] |INNER JOIN | [_1S.JOURN] As [TabJ] ON (ДокПЛ.IDDOC = TabJ.IDDOC) | |WHERE | (TabJ.DATE between @НачДата AND @КонДата) |GROUP BY ДокПЛ.ссВодитель, ДокПЛ.саАвтовоз |"; Поставщик.УстановитьТекстЗапроса(ТекстЗапроса, "Водитель, Автовоз"); Без "GROUP BY" работает замечательно, а вот сним ругается <near "GROUP": syntax error> В доке написано, что "Запрос должен быть запросом на выборку (select'ом), без указания упорядочивания запроса (без order by). ". Это и групп бай касается? Или у меня в коде где косяк? |
|||
1
Aleksey
18.02.13
✎
22:49
|
а зачем тут GROUP BY?
|
|||
2
Aleksey
18.02.13
✎
22:50
|
или просто нужен аналог SELECT DISTINCT
|
|||
3
Zhuravlik
18.02.13
✎
22:51
|
Чтобы было Один водитель = один автовоз. А то ведь есть несколько документов, с одними и теже водителями и автовозами.
|
|||
4
Zhuravlik
18.02.13
✎
22:51
|
DISTINCT!
|
|||
5
Aleksey
18.02.13
✎
22:51
|
(3) SELECT DISTINCT
|
|||
6
Zhuravlik
18.02.13
✎
22:51
|
Я и забыл о нем)
|
|||
7
Zhuravlik
18.02.13
✎
22:52
|
А разве это не прерогатива GROUP BY? GROUP BY - это чтобы "свернуть", так? А дистинкт - выбрать уникальные?
|
|||
8
orefkov
18.02.13
✎
22:53
|
(0)
С group by не будет работать. Поставщик данных sqlite не предназначен для этого. Он для отображения таблиц с фильтацией. |
|||
9
orefkov
18.02.13
✎
22:56
|
С дистинктом тоже будет работать крайне хреново.
Твоя задача больше на отчет походит, а не на журнал. Делай запрос в тз и используй поставщика тз из 1С++. |
|||
10
Aleksey
18.02.13
✎
22:56
|
(7) Ну чистый SQL в плане запросов как раз и не знает что такое DISTINCT, а преобразует его в GROUP BY. Но в данном случае (8)
|
|||
11
Zhuravlik
18.02.13
✎
22:56
|
(8) А если мне нужно сумму неск. полей взять? Так не получится?
|
|||
12
Zhuravlik
18.02.13
✎
22:59
|
(9) Это я для тренировки. А так мне поставщик SQLite нужен чтобы читать справочник, в котором будут одновременно работать неск. человек, с тз уже написал хочу попробовать с SQlite првайдером, а то чтобы одноить флаг запрета редактирования приходится искать элемент справочника в ПриВыводеСтроки, а мне что-то кажется что это не очень.
|
|||
13
Zhuravlik
18.02.13
✎
22:59
|
*одноить = обновить
|
|||
14
Zhuravlik
18.02.13
✎
23:04
|
В общем все понятно, спасибо за помощь)
|
|||
15
orefkov
18.02.13
✎
23:08
|
(11)
Должна быть основная таблица, записи из которой будут отображаться 1 в 1 (ну, с возможной фильтрацией, т.е. пропуском некоторых записей) а к ней можно уже цеплять подзапросы (лучше left join'ом) и кореляционные поля. |
|||
16
Zhuravlik
18.02.13
✎
23:17
|
(15) Суть понял, буду пробовать. Спасибо еще раз)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |