Equivalent de l instruction LIMIT en SQL Server

Equivalent de l instruction LIMIT en SQL Server - SQL/NoSQL - Programmation

Marsh Posté le 14-05-2002 à 15:47:31    

Bonjour j utilise SQL Server de Microsoft et je voudrais savoir si il existait un quivalent de LIMIT (pour specifier un intervalle specifique, donc l'opérateur TOP ne me convient pas)
 
Merci...

Reply

Marsh Posté le 14-05-2002 à 15:47:31   

Reply

Marsh Posté le 14-05-2002 à 16:08:19    

Malheureusement je n'ai rien trouvé de mieux que "top" qui n'est pas top dans ce cas là :/


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 14-05-2002 à 16:16:32    

ouep visiblement y a ke dal :( ca me fait chier à cause de ça va falloir faire 2 fois plus de traitement en ASP pour u ntruc tout con !

Reply

Marsh Posté le 02-06-2002 à 20:16:19    

je crois pas que ca existe, effectivement.
Par contre, tu peux à la rigueur ajouter un champ calculé auto-incrémental à ta requete, du genre :
SELECT identity(x,y) as identite, champ_a, champ_b FROM ma_table
verifier les param de la fonction identity, je m'en souviens plus par coeur.
Ensuite tu fais un select de cette requte en specifiant ton intervalle dans la clause where:
SELECT t.*
FROM (SELECT identity(x,y) as identite, champ_a, champ_b FROM ma_table....) t
WHERE t.identite between debut and fin
 
c'est pas ultime, mais c'est un palliatif pas trop déguelasse...


Message édité par noli le 06-02-2002 à 20:16:48

---------------
"Etre pris pour un idiot par un imbécile est une jouissance de fin gourmet" - Jean Cocteau
Reply

Marsh Posté le 02-06-2002 à 20:18:29    

et en utilisant des curseurs ?

Reply

Marsh Posté le 02-06-2002 à 20:43:05    

y'a pas d'équivalent.
une solution :
tu fais une requete count qui récupère le nombre de résultat.
puis tu fais une 2e requete, si tu veux les engistrements 61 à 70 , faut faire par exemple :
SELECT TOP 10 FROM matable WHERE id IN (SELECT TOP (nbresult-60) id FROM matable ORDER BY ordre_inverse) ORDER BY ordre
 
donc c pas génial. en pratique, il est très souven bcp plus rapide de tout sélectionner et de traiter en asp (si c'est ça que t'utilise) pour avoir que les enregistrements qui t'intéressent

Reply

Marsh Posté le 02-06-2002 à 20:47:32    

siewn a écrit a écrit :

y'a pas d'équivalent.
une solution :
tu fais une requete count qui récupère le nombre de résultat.
puis tu fais une 2e requete, si tu veux les engistrements 61 à 70 , faut faire par exemple :
SELECT TOP 10 FROM matable WHERE id IN (SELECT TOP (nbresult-60) id FROM matable ORDER BY ordre_inverse) ORDER BY ordre
 
donc c pas génial. en pratique, il est très souven bcp plus rapide de tout sélectionner et de traiter en asp (si c'est ça que t'utilise) pour avoir que les enregistrements qui t'intéressent  




et heuuu les curseurs ? :heink:

Reply

Marsh Posté le 02-06-2002 à 20:49:27    

développe  :D

Reply

Marsh Posté le 02-06-2002 à 20:54:12    

http://www.swynk.com/friends/achigrik/usecursor.asp
 
enfin apparement ils disent qu'il faut préférer un curseur à un select, donc finalement ta solution avec un subselect me parait mieux.


Message édité par joce le 06-02-2002 à 20:54:47
Reply

Marsh Posté le 02-06-2002 à 20:57:18    

ok, connaissais même pas ça  :heink:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed