|
v7: 1sqlite. Не всегда срабатывает GROUP BY | ☑ | ||
---|---|---|---|---|
0
Перелетный косяк
17.07.12
✎
08:59
|
База 7.7, DBF, Самописка, компонента ОперУчет
1cpp 3.2.2.0, 1sqlite 1.0.2.4 Прямой запрос, считает количество строк, штук, номенклатурных групп и т.д. в документах: SELECT '20'||substr(ДР.ВремяСборки, 7, 2)||substr(ДР.ВремяСборки, 4, 2)||substr(ДР.ВремяСборки, 1, 2) as [Дата :Дата], ДР.Отправитель as [Склад :Справочник.Склады], ДР.Сборщик as [Сборщик :Справочник.Сотрудники], ДРС.iddoc as [Док :Документ.ПеремещениеТМЦ], COUNT(DISTINCT ДРС.iddoc) as КолНакладных, COUNT(DISTINCT ДРС.Номенклатура) as КолСтрокНакладной, COUNT(DISTINCT Ном.ParentID) as КолГрупп, SUM (ДРС.Количество) as [КолШтук :Число.15.2], SUM (ДРС.Сумма) as [Сумма :Число.15.2] FROM [ДокументСтроки.ПеремещениеТМЦ] as ДРС inner join [Справочник.Номенклатура] as Ном on ДРС.Номенклатура = Ном.id inner join [Документ.ПеремещениеТМЦ] as ДР on ДРС.iddoc = ДР.iddoc WHERE ДРС.iddoc in (SELECT Val From ВыбСписокЖокументов) GROUP BY ДРС.iddoc Иногда GROUP BY ДРС.iddoc срабатывает и таблица сворачивается, иногда нет .Отладка() показывает одно и то же. По крайней мере я отличий не нашел 1)Вот при НЕПРАВИЛЬНОЙ РАБОТЕ запроса. Подбор индекса для таблицы DT766: Ограничения: SP757[Номенклатура]=; IDDOC=; Упорядочить: IDDOC, Найдено в кэше Выбран индекс IDLINE: IDDOC+STR(LINENO,4) Попадает в сортировку Стоимость: 18 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы DT766: Ограничения: Упорядочить: IDDOC, Найдено в кэше Выбран индекс IDLINE: IDDOC+STR(LINENO,4) Попадает в сортировку Стоимость: 36 Подбор индекса для таблицы SC56: Ограничения: Найдено в кэше Индекс не выбран. Стоимость: 9984 Подбор индекса для таблицы DH766: Ограничения: Найдено в кэше Индекс не выбран. Стоимость: 9986 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 2) Вот при ПРАВИЛЬНОЙ РАБОТЕ запроса. Подбор индекса для таблицы DT766: Ограничения: SP757[Номенклатура]=; IDDOC=; Упорядочить: IDDOC, Найдено в кэше Выбран индекс IDLINE: IDDOC+STR(LINENO,4) Попадает в сортировку Стоимость: 18 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы DT766: Ограничения: Упорядочить: IDDOC, Найдено в кэше Выбран индекс IDLINE: IDDOC+STR(LINENO,4) Попадает в сортировку Стоимость: 36 Подбор индекса для таблицы SC56: Ограничения: Найдено в кэше Индекс не выбран. Стоимость: 9984 Подбор индекса для таблицы DH766: Ограничения: Найдено в кэше Индекс не выбран. Стоимость: 9986 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы DH766: Ограничения: IDDOC=; Найдено в кэше Выбран индекс ID: IDDOC Стоимость: 14 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 Подбор индекса для таблицы SC56: Ограничения: ID=; Найдено в кэше Выбран индекс IDD: ID Стоимость: 16 |
|||
1
Ёпрст
17.07.12
✎
09:02
|
Если че, в GROUP BY нужно перечислять всё, что в селект листе.. скажи спасибо, что sqllite не ругается при этом
|
|||
2
Ёпрст
17.07.12
✎
09:03
|
+ нафига так извратно дату типизировать ?
|
|||
3
Перелетный косяк
17.07.12
✎
09:07
|
(1) Может, лучше бы ругался
т.е. GROUP BY '20'||substr(ДР.ВремяСборки, 7, 2)||substr(ДР.ВремяСборки, 4, 2)||substr(ДР.ВремяСборки, 1, 2), ДР.Отправитель, ДР.Сборщик, ДРС.iddoc, COUNT(DISTINCT ДРС.iddoc), COUNT(DISTINCT ДРС.Номенклатура), COUNT(DISTINCT Ном.ParentID), SUM (ДРС.Количество), SUM (ДРС.Сумма) - ?? некрасиво блин (2) дата записывается коряво в текстовой строке ((, а нужно из строки вытащить дату-день |
|||
4
Ёпрст
17.07.12
✎
09:09
|
(3) ёпт..
Всё кроме агрегатных функций! |
|||
5
Перелетный косяк
17.07.12
✎
09:14
|
(4) стало стыдно(
спасибо, теперь заводится |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |