|
|
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. допустим нам этот результат вернет записи с такими номерами 3 12 45 89 90 Как можно изменить этот запрос так, чтобы в добавок к этой выдаче, используя её как опорные точки, добавились бы две "верхние" и две "нижние" строчки соответственно, то есть итоговый результат хочется такой 1 2 3 4 5 10 11 12 13 14 43 44 45 46 47 87 88 89 90 91 92 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 00:08:28 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 00:30:12 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
даа, это ж ещё нужно qwerty112 Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 00:32:20 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
qwerty112, наверно еше дистинкт надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 01:23:48 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Lumix, id имеют пропуски? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 07:04:10 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
miksoftLumix, id имеют пропуски? Спасибо, что обратили на это внимание. Я подумал и пришел к выводу, что да, такое может быть. То есть не всегда удаление той или иной записи требует переиндексации всей базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 11:48:05 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
LumixmiksoftLumix, id имеют пропуски? Спасибо, что обратили на это внимание. Я подумал и пришел к выводу, что да, такое может быть. То есть не всегда удаление той или иной записи требует переиндексации всей базы.А если нужная запись пропущена, то ее нужно тоже пропускать в результате запроса или брать следующую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 11:50:55 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
miksoftLumixпропущено... Спасибо, что обратили на это внимание. Я подумал и пришел к выводу, что да, такое может быть. То есть не всегда удаление той или иной записи требует переиндексации всей базы.А если нужная запись пропущена, то ее нужно тоже пропускать в результате запроса или брать следующую? В итоговом результате всегда вокруг опорной точки должно быть добавлено две снизу и две сверху, то есть ответ на ваш вопрос - брать следующую. Единственное, где это правило нарушается, это когда опорные точки сами идут друг за другом, например 89 90 в этом случае 89 является первой добавочной строчкой снизу для 90, а 90 является первой добавочной строчкой сверху для 89 если в базе нет строчек 88 и 91, а остальные есть, тогда итоговый результат для этих двух опорных точек такой 86 87 89 90 92 93 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 12:48:46 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
javajdbcqwerty112, наверно еше дистинкт надо даа, конечно )) что могут быть соседнии (89, 90) и не подумал ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 17:55:52 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Lumixmiksoftпропущено... А если нужная запись пропущена, то ее нужно тоже пропускать в результате запроса или брать следующую? В итоговом результате всегда вокруг опорной точки должно быть добавлено две снизу и две сверху, то есть ответ на ваш вопрос - брать следующую. Единственное, где это правило нарушается, это когда опорные точки сами идут друг за другом, например 89 90 в этом случае 89 является первой добавочной строчкой снизу для 90, а 90 является первой добавочной строчкой сверху для 89 если в базе нет строчек 88 и 91, а остальные есть, тогда итоговый результат для этих двух опорных точек такой 86 87 89 90 92 93 что-то типа такого, вроде должно "работать" (непроверял) Код: sql 1. 2. 3. 4. но "тяжёлый" запрос будет ... имхо, правильнее будет пронумеровать таблицу t (возможно, через времянку) и потом, итоговый запрос, по первому варианту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2013, 18:09:24 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 00:32:47 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Вероятно, тот редкий случай, когда оправдан фулл-скан курсор... В буфер 2 строки до искомой, смещать верхнюю границу, если в двух следующих записях встретится очередная искомая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2013, 22:48:11 |
|
||
|
Как вернуть две верхние и две нижние строчки
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Вероятно, тот редкий случай, когда оправдан фулл-скан курсор... В буфер 2 строки до искомой, смещать верхнюю границу, если в двух следующих записях встретится очередная искомая вот честно лень оконную функцию делать ана переменных (статейка где-то была, хотя и так понятно). Кучу переменных держать. Да и 100 раз проше действительно на обычном процедырном курсоре -- покрайне мере в 100 раз понятнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2013, 05:14:05 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38513804&tid=1835470]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 288ms |

| 0 / 0 |
