|
Как в запросе получить следующую позицию в списке после элемента с пометкой? |
☑ |
0
svird
30.08.16
✎
09:29
|
Есть справочник, у элементов справочника есть реквизит Дата, мне надо в запросе получить следующий элемент после элемента с определенной датой. Как это сделать с наименьшими затратами?
|
|
1
Горогуля
30.08.16
✎
09:33
|
выбрать первые 1 из справочник соединение (выбрать максимум где дата<=&нужная) по дата1>=дата2 порядочить по дата1 убыв
|
|
2
svird
30.08.16
✎
09:40
|
(1) Проблема в том, что может быть элемент без даты вообще. По дате сортировать нельзя. Если бы можно было по дате отобрать было бы проще.
|
|
3
Горогуля
30.08.16
✎
09:43
|
>без даты вообще
это как?
ну замени первоя января чем-нибудь
|
|
4
Лефмихалыч
30.08.16
✎
09:43
|
гугли: срез последних на каждую дату
|
|
5
mkalimulin
30.08.16
✎
09:44
|
(0) В каком порядке идут элементы?
|
|
6
svird
30.08.16
✎
09:52
|
(5) Ну у них есть сортировка наподобие: Порядок шагов, но эти шаги могут быть не уникальны, так как могут быть несколько заходов (типа документооборот), поэтому к порядку шагов тоже привязаться не удается. Самое четкое, это если получить следующий элемент после элемента с определенной датой.
|
|
7
Горогуля
30.08.16
✎
09:53
|
(6) любой из следующих?
|
|
8
Горогуля
30.08.16
✎
09:55
|
в БД есть один элемент с датой 1 и пятьдесят элементов с датой 2. который из 50 интересует?
|
|
9
igork1966
30.08.16
✎
09:57
|
(0)(2) Без сортировки задача не может быть решена в принципе.
Стандарт SQL не гарантирует повторения порядка записей в неупорядоченном результате запроса.
|
|
10
svird
30.08.16
✎
10:01
|
Оно сортируется по параметру Порядок шагов, просто получить номер этого порядка сложно, так как он в каком то регистре еще хранится. Так что можно сказать, что оно отсортировано. Поэтому и хочется получить следующий элемент, после определенного, понимаю, что наверно язык запросов этого не позволяет.
|
|
11
igork1966
30.08.16
✎
10:07
|
(10) Если сортировка есть, то задача решаемая.
Недавно тут обсуждали получения курса на несколько дат, там как раз аналогичный алгоритм требовался.
|
|
12
aleks_default
30.08.16
✎
10:09
|
(10)Скорее твой язык не позволяет тебе полноценно сформулировать ТЗ.
|
|
13
igork1966
30.08.16
✎
10:10
|
|
|
14
SSSSS_AAAAA
30.08.16
✎
10:11
|
(10) "Так что можно сказать, что оно отсортировано"
Кому можно? Сортировка должна быть в запросе, а не где-то там, за горизонтом...
|
|
15
patria0muerte
30.08.16
✎
10:50
|
Можешь пронумеровать строки запроса по порядку и левым соединением получить искомое поле по НомерСтроки + 1.
Разумеется это взлетит, если есть поле, по которому можно однозначно отсортировать запрос.
|
|
16
mkalimulin
30.08.16
✎
11:07
|
(10) Приведи мысли в порядок. Либо сортировка есть. Тогда эта задача решается. И запросом и не запросом. Либо сортировки нет. Тогда эта задача не решается. Никак, ни запросом, ни каким-либо другим способом. Потому что, в этом случае, понятие "следующий" теряет смысл.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший