|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
scalalaz
18.01.12
✎
11:20
|
Пишу запрос для поиска пропущенных чисел в последовательности (на примере кодов справочника). Запрос следующий:
ВЫБРАТЬ Таблица1.Код - 1 КАК Поле1 ИЗ (ВЫБРАТЬ Номенклатура1.Код КАК Код ИЗ Справочник.Номенклатура1 КАК Номенклатура1) КАК Таблица1 ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Номенклатура1.Код КАК Код ИЗ Справочник.Номенклатура1 КАК Номенклатура1) КАК Таблица2 ПО (Таблица1.Код = Таблица2.Код + 1) ГДЕ Таблица2.Код IS NULL И Таблица1.Код - 1 >= (ВЫБРАТЬ минимум(Номенклатура1.Код) ИЗ Справочник.Номенклатура1 КАК Номенклатура1) В данном запросе вылетает синтаксическая ошибка на условие Таблица1.Код - 1 >= (ВЫБРАТЬ минимум(Номенклатура1.Код) ИЗ Справочник.Номенклатура1 КАК Номенклатура1) Не пойму что не так в этом условии. |
|||
1
mikecool
18.01.12
✎
11:22
|
так нельзя, если юзаешь подзапрос в условии, то сравнение может быть только В
|
|||
2
Amiralnar
18.01.12
✎
11:24
|
Префиксов не бывает?
|
|||
3
Ненавижу 1С
гуру
18.01.12
✎
11:29
|
Код это строка
|
|||
4
Kashemir
18.01.12
✎
11:29
|
(0) В SQL такое можно, но в 1С подзапросы ограничены условием В, как указано в (1)
|
|||
5
Kashemir
18.01.12
✎
11:30
|
(3) Кто сказал что обязательно строка ?
|
|||
6
scalalaz
18.01.12
✎
11:33
|
(1) (4) - ясно, спасибо
(3) (5) - у меня код число - справочник создан специально для тестового примера |
|||
7
Kashemir
18.01.12
✎
11:34
|
(6) Можешь использовать для задачи другой метод - получить диапазон всех чисел от и до и к нему присоединить по коду элементы, где NULL там и пропущено.
|
|||
8
Ненавижу 1С
гуру
18.01.12
✎
11:34
|
(6) ага "число", а все равно строка ))
|
|||
9
Kashemir
18.01.12
✎
11:35
|
(8) Любопытный взгляд на число.
|
|||
10
scalalaz
18.01.12
✎
11:38
|
(7) как получить диапазон чисел (от минимального кода до максимального) запросом?
|
|||
11
Ненавижу 1С
гуру
18.01.12
✎
11:40
|
(9) как-то не интересовался )) однако...
просто в 7.7 он все равно строкой был |
|||
12
scalalaz
18.01.12
✎
11:41
|
(7) Видел что то подобное в базе знаний. Но по моему там запрос не универсальный и не привязан к конкретной последовательности.
|
|||
13
Kashemir
18.01.12
✎
11:44
|
(12) Да где-то там есть. Запрос вполне универсален хоть и непрезентабелен - нужно лишь определится с максимальным значением.
|
|||
14
Kashemir
18.01.12
✎
11:47
|
Нашел - тут есть пример Книга знаний: v8: Полные остатки по периоду во вложенном запросе по начальному остатку;
|
|||
15
rs_trade
18.01.12
✎
11:48
|
(10) нужна таблица чисел. хотя бы от 0 до 9
|
|||
16
Kashemir
18.01.12
✎
11:59
|
Вот еще вариант решения. Возвращает интервалы с пропущенными числами
ВЫБРАТЬ ВложенныйЗапрос.Код, ВложенныйЗапрос.СледующийКод ИЗ (ВЫБРАТЬ Номенклатура.Код КАК Код, МИНИМУМ(Номенклатура1.Код) КАК СледующийКод ИЗ Справочник.Номенклатура КАК Номенклатура ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1 ПО Номенклатура.Код < Номенклатура1.Код СГРУППИРОВАТЬ ПО Номенклатура.Код) КАК ВложенныйЗапрос ГДЕ (НЕ ВложенныйЗапрос.Код + 1 = ВложенныйЗапрос.СледующийКод) И (НЕ ВложенныйЗапрос.СледующийКод ЕСТЬ NULL ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |