Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
2-1222238254
zdm
2008-09-24 10:37
2008.11.02
Нахождение компонент


1-1201897002
elserpiente
2008-02-01 23:16
2008.11.02
ListView


2-1222067753
sapsi
2008-09-22 11:15
2008.11.02
Найти порядковый номер строки Memo


2-1222342938
HairBack
2008-09-25 15:42
2008.11.02
Вопрос по TThread


2-1222350296
tytus
2008-09-25 17:44
2008.11.02
idFTP - как скачать файл с определенной позиции





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский