Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Доброе день. Суть вопроса такая запрос возвращает, например 23 строк: 1 строка 2 строка 3 строка ... 23 строка Как составить запрос таким образом, чтобы в зависимости от входящего параметра А (принимающий значения 1,2,3... и т.д.), если А=1, то возвращал с 1 строки по 5 строку если А=2, то возвращал с 6 строки по 10 строку если А=3, то возвращал с 11 строки по 15 строку ... если А=5, то возвращал с 20 строки по 23 строку ну и т.д. Большое всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 09:00 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
в кащее нельзя выбрать строки с такой-то по такую-то, можно лишь ограничить количество в выборке select top 20 * from Table ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 09:57 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Спасиб. Жаль конеШно... А нет какой нить функции, типа счетчика строк...?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 10:24 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Интересно... А прокатит ли такой вариант? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 10:27 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Поправка... Т.е. без Код: plaintext Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 10:28 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
такой вариант с запросом отчасти прокатывает, только в a.ID between 6 AND 10 (и в других) - нельзя завязываться на ID - не факт что по порядку они идут, вернее какието записи могут быть удалены к тому же еще одна проблема, не известно число таких ограничений (A=1 AND a.ID between 1 AND 5) OR (A=2 AND a.ID between 6 AND 10) их может быть 5 а может быть 10 или еще больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 11:39 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Попробуйте %Library.ScrollableResultSet. Обеспечивает произвольный доступ к любой порции результата запроса. Но, ИМХО, это имеет смысл лишь когда обращений к результатам одного и того же запроса достаточно много, иначе неизбежные накладные расходы по копированию ResultSet'а в глобал могут оказаться неоправданными. В противном случае для вычисления граничных условий запроса более эффективно воспользоваться прямым доступом к глобалу с данными таблицы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 12:55 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
scaroнельзя завязываться на ID - не факт что по порядку они идут, вернее какието записи могут быть удалены Это "ID" результата селекта... А не самой таблицы Table... Там ничего не удаляли. Другое дело что само название свойства у "итоговой" таблицы не такое... scaroк тому же еще одна проблема, не известно число таких ограничений ... их может быть 5 а может быть 10 или еще больше В примере автора все точно описано. В других случаях можно использовать формули и пр. элементы языка... Т.е. в моем случае это всего лиш предположение... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 14:08 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
krvsa Это "ID" результата селекта....А не самой таблицы Table... в том запросе это именно ID строк в таблице и соответственно удаляя из середины данные, и выборка будет неправильная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 14:31 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Странно а у меня запрос выдает разное количество записей в зависимости от A если = 1 то 2 записи, а если A = 2 то 1 запись, а даже совсем не по 5 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 14:34 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
По поводу класса %Library.ScrollableResultSet, у него тут есть свойство CurrRow /// Number of current row in the temp table, you can set this property to /// move to a new location and also use this to check the current position. Property CurrRow As %Integer; Правильно я понял? что можно задать начальную позицию и от нее Next()'ом пять шагов сделать по результату запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 15:08 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
ну в описании к свойству так и написано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 15:13 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
krvsaЭто "ID" результата селекта....А не самой таблицы Table...Впервые слышу, что ID - это номер записи в РезалтСете. С т.з. SQL, это все-таки имя поля таблицы. Кстати, похоже, %Library.ScrollableResultSet - единственный гарантированный способ получить мгновенный снимок в Cache, который не будет меняться в течение обработки запроса. Или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 15:36 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
в общем %Library.ScrollableResultSet должна подойти, проверил задал начальный CurrRow, и от него прошел Next()'ом 5 строк, сработало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 15:45 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
DAiMor , я ID специально написал в кавычках (если че)... Кто знает! Может есть какое-то свойство у результирующей таблицы которое сможет роканать за это самое ID... Вот про что и пытаюсь объяснить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 16:05 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
scaroСтранно а у меня запрос выдает разное количество записей в зависимости от A если = 1 то 2 записи, а если A = 2 то 1 запись, а даже совсем не по 5 записей Потому как см. объяснения DAiMor и Alexey Maslov ... Я же быквы I и D (незнаю как еще объяснить) взял чисто условно... В надежде что сотрудники ИС вдруг скажут: - Да! Конечно! Есть такое свойство у резаулта. Тока оно пишется %rezID (Это опять же просто предположение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 16:09 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Krvsa, не сбивайте с толку ньюбов, им и так нелегко... Допустим, свойство есть. Вот, например, у %Library.ScrollableResultSet, как тут уже писали, оно и вправду есть (Property CurrRow). Каким образом Вы сумели бы употребить св-во этого объекта (унаследованного от %RegisteredObject) в SQL-запросе? Или Вы хотите сказать, что по отношению к выборке ResultSet можно использовать SELECT (т.е. она является чем-то вроде временной таблицы)? Но ведь и это не так... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 16:38 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
Alexey MaslovИли Вы хотите сказать, что по отношению к выборке ResultSet можно использовать SELECT (т.е. она является чем-то вроде временной таблицы)? Да. У меня была надежда на это... Alexey MaslovНо ведь и это не так... Надежда умерла... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 16:51 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
не в запросе ограничивать, а потом в резалтсете уже нужные взять set rs = ##class(%ScrollableResultSet).%New() set rs.ClassName = "класс" set rs.QueryName = "запрос" do rs.Execute() if rs.Count() >=5 set rs.CurrRow = 5 set i = 0 While (i<5) && (rs.Next()) { вынимае все что нужно из запроса set i = i +1 } в этом примере я получаю из результата запроса записи с 6ой по 10ую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 17:39 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
СПАСИБО всем большое... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 18:02 |
|
||
|
Как сделать select "с.. по"
|
|||
|---|---|---|---|
|
#18+
nurdus, Можно еще вот так: select count (test_2.id) as rank, test_1.id, test_1.name from refitem_city.data as test_1 inner join refitem_city.data as test_2 on test_1.id >= test_2.id group by test_1.id, test_1.name having count(test_2.id) between 2 and 4 //выбрать строки со 2 по 4 order by rank ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2009, 03:36 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=35762098&tid=1558601]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 426ms |

| 0 / 0 |
