Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.02;
Скачать: CL | DM;

Вниз

SKIP записей при селективном запросе   Найти похожие ветки 

 
piople ©   (2008-04-21 08:25) [0]

Здравстуйте! Использую ADO + MSSQL 2005. Сталкнулся с проблемой - необходимо выбрать записи из таблицы, но при этому пропустить несколько первых. То есть, есть ISAPI гостевой книги, соответственно с переходами по страницам. И конечно не хочется тянуть из БД все записи, пролистывать их в цикле программы и выводить нужные. Есть ли возможность программно на через селективный запрос запросить записи начиная с 40 по 50?

З.Ы. Наткунлся на http://msdn2.microsoft.com/en-us/library/bb738680.aspx


You can perform physical paging by using the SKIP sub-clause in the ORDER BY clause. SKIP cannot be used separately from the ORDER BY clause.

Syntax

[ SKIP (n) ]
Arguments
n
The number of items to skip.

Remarks
If a SKIP expression sub-clause is present in an ORDER BY clause, the results will be sorted according the sort specification and the result set will include rows starting from the next row immediately after the SKIP expression. For example, SKIP 5 will skip the first five rows and return from the sixth row forward.

Note  
An Entity SQL query is invalid if both the TOP modifier and the SKIP sub-clause are present in the same query expression. The query should be rewritten by changing the TOP expression to the LIMIT expression.

Note  
In SQL Server 2000, using SKIP with ORDER BY on non-key columns might return incorrect results. More than the specified number of rows might be skipped if the non-key column has duplicate data in it. This is due to how SKIP is translated for SQL Server 2000. For example, in the following code more than five rows might be skipped if E.NonKeyColumn has duplicate values:
SELECT [E] FROM Container.EntitySet AS [E] ORDER BY [E].[NonKeyColumn] DESC SKIP 5L

Example
The following Entity SQL query uses the ORDER BY operator with SKIP to specify the sort order used on objects returned in a SELECT statement. The query is based on the AdventureWorks Sales Model. To compile and run this query, follow these steps:

Follow the procedure in How to: Execute an Entity SQL Query Using EntityCommand (Entity Framework).

Substitute the query string in the sample with the following query:

Copy Code
SELECT VALUE e1 FROM AdventureWorksEntities.Product
   AS e1 order by e1.ListPrice SKIP(70)


Но видемо руки у меня ростут не оттуда )


 
sniknik ©   (2008-04-21 08:44) [1]

> запросить записи начиная с 40 по 50?
в 2005 появилась нумерация строк в запросах (RowNum), т.что запрос определенных нумерацией становится очевидным.

LIMIT это из MySql, также как и этот скопированный кусок хелпа... SKIP не знаю, не пользовался, но судя по тому что он в том же тексте с LIMIT...


 
piople ©   (2008-04-21 09:41) [2]

Спасибо, видемо все же придется делать так:
SELECT     *
FROM         (SELECT     TOP (20) ROW_NUMBER() OVER (ORDER BY TDate) AS TmpR, *
FROM         SiteGuestBook) TmpR1
WHERE     TmpR BETWEEN 10 AND 20


Жаль что нет аналога SKIP & LIMIT...


 
Anatoly Podgoretsky ©   (2008-04-21 11:44) [3]


> LIMIT это из MySql, также как и этот скопированный кусок
> хелпа... SKIP не знаю, не пользовался, но судя по тому что
> он в том же тексте с LIMIT...

Это не MySQL, Entity SQL, часть ADO.NET


 
Anatoly Podgoretsky ©   (2008-04-21 11:47) [4]


> Жаль что нет аналога SKIP & LIMIT...

Как это нет, а это что?

SELECT c.ContactID as ID, c.LastName as Name FROM
   AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;


 
sniknik ©   (2008-04-21 12:00) [5]

> Это не MySQL, Entity SQL, часть ADO.NET
ясно, но для меня бесполезно, ADO на запросе из [4] дает "Incorrect syntax near "SKIP""


 
sniknik ©   (2008-04-21 12:04) [6]

кстати непонятно почему... или ADO.NET сам выполняет/преобразовывает запросы? по идее то должен передать в MSSQL и получить результат также как ADO, и тогда синтаксис их запросов (ADO/ADO.NET) должен быть одинаков, и зависеть только от поддержки данного синтаксиса MSSQL-ем.


 
Anatoly Podgoretsky ©   (2008-04-21 14:05) [7]

> sniknik  (21.04.2008 12:00:05)  [5]

АДО даст, это должно использоваться только в ADO.NET и при использование Entity SQL
Широко применяется в ASP.NET или скрыто или явно, для разбиения на страницы.


 
Anatoly Podgoretsky ©   (2008-04-21 14:06) [8]

> sniknik  (21.04.2008 12:04:06)  [6]

Ну я уже написал, что это даже не ADO.NET и тем более сервер.


 
piople ©   (2008-04-22 05:14) [9]

Немного расширю тему если вдруг кому инетересно:

Entity SQL — новый язык, обеспечивающий исполнение декларативных запросов, ориентированных на наборы, а также обновление сущностей и связей в Entity Data Model. Для Entity SQL практически не важен провайдер данных, поэтому одни и те же запросы можно исполнять через разные провайдеры БД, что экономит время на написание кода.

Линк - http://64.233.183.104/search?q=cache:1jQmGncXdNkJ:https://msdb.ru/Downloads/sql/2008/SQL2008andDP_rus.doc+%D0%A7%D1%82%D0%BE+%D1%82%D0%B0%D0%BA%D0%BE%D0%B5+Entity+SQL&hl=ru&ct=clnk&cd=3&gl=ru&lr=lang_ru


 
ANB   (2008-04-22 09:39) [10]


> Entity SQL — новый язык, обеспечивающий исполнение декларативных
> запросов, ориентированных на наборы, а также обновление
> сущностей и связей в Entity Data Model. Для Entity SQL практически
> не важен провайдер данных, поэтому одни и те же запросы
> можно исполнять через разные провайдеры БД, что экономит
> время на написание кода.

взамен увеличивая время исполнения запроса, т.к. не учитывает особенности диалекта сервера.



Страницы: 1 вся ветка

Текущий архив: 2008.11.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.016 c
2-1222244324
grav
2008-09-24 12:18
2008.11.02
Не работает переход по Tab


1-1201174663
Elec3C
2008-01-24 14:37
2008.11.02
Свойства файла


15-1220959204
vajo
2008-09-09 15:20
2008.11.02
Вот уж не думал, что тема про штрафы ГИБДД никому не интересна.


2-1222246161
DevExpress
2008-09-24 12:49
2008.11.02
При задании фильтра вылетает ошибка:


1-1202143624
Сергей
2008-02-04 19:47
2008.11.02
Duplicate resource