Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1388 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MS-SQL] Comment faire le Limit [offset] du MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MS-SQL] Comment faire le Limit [offset] du MySQL

n°610928
zetoune
Posté le 13-01-2004 à 19:40:58  profilanswer
 

Je cherche à reproduire la même chose que mySQL
du genre select * from matable limit 2,5
 
la commande TOP dans mSSQL ne permet pas de commencer à partir de la ligne qu'on veut..
 
J'ai vu aussi un truc similiaire avec oledbdataadapter
 
myAdapter.Fill(DataSet,startIndex,Nb_Rows,"NomTable" )
 
mais cela a l'air de retourner l'ensemble des lignes et de remplir la table de la ligne StartIndex jusqu a StartIndex+Nb_rows.
 
J'aimerais que la commande SQL renvoit directement et seulement les lignes concernées.
Quelqu un a une idée ?

mood
Publicité
Posté le 13-01-2004 à 19:40:58  profilanswer
 

n°610960
jagstang
Pa Capona ಠ_ಠ
Posté le 13-01-2004 à 20:08:17  profilanswer
 

Cela n'existe pas en MS-SQL.
 
Il faut faire une sous-requête avec des TOP(10)
 

n°610969
zetoune
Posté le 13-01-2004 à 20:11:46  profilanswer
 

tu fais ca comment au juste ?

n°611013
jagstang
Pa Capona ಠ_ಠ
Posté le 13-01-2004 à 20:38:55  profilanswer
 

SELECT TOP 10 name from table WHERE name NOT IN(SELECT TOP 20 ...)
 
retourne les éléments de 20 à 30

n°611022
zetoune
Posté le 13-01-2004 à 20:42:18  profilanswer
 

ah ouais pas bête du tout !!

n°611027
jagstang
Pa Capona ಠ_ಠ
Posté le 13-01-2004 à 20:44:50  profilanswer
 

c'est vrai que quand on est habitué à limit(20,10), cette méthode s'apparente un peu à du bricolage.... Mais je me suis renseigné, j'ai pas trouvé de façon plus simple de le faire.  

n°611032
zetoune
Posté le 13-01-2004 à 20:49:22  profilanswer
 

ben si tu n'es pas pressé par les performances et que tu utilises ADO.Net . Tu peux utiliser un DataAdapter comme je le disais plus haut..
Adapter.Fill(oDataset,startindex,Number_Rows,"nomtable" ).
Mon problème moi c'est que je veux sortir 50 lignes a la fois sur un ensemble de 50000 lignes environ.. et j ai toujours TimeoutExpired de SQL.. Alors je cherche le moyen le plus rapide !

n°611040
jagstang
Pa Capona ಠ_ಠ
Posté le 13-01-2004 à 20:51:57  profilanswer
 

lol. t'aurais pu réagir avant d'avoir des problèmes de Timeout...

n°611083
zetoune
Posté le 13-01-2004 à 21:26:55  profilanswer
 

ben j ai besoin de toutes les lignes !!!

n°618643
Gfreeman
http://www.FGFasp.com
Posté le 22-01-2004 à 08:43:08  profilanswer
 

Code :
  1. str_sql = _
  2.    "SELECT MIN(Mes_1.mes_date), MAX(Mes_1.mes_date) " & _
  3.    "FROM " & _
  4.    "(" & _
  5.     "SELECT TOP " & arr_param(1) & " Mes_1.mes_date " & _
  6.     "FROM " & _
  7.     "(" & _
  8.      "SELECT TOP " & arr_param(2) & " Mes_1.mes_date " & _
  9.      "FROM Messages Mes_1 " & _
  10.      "WHERE Mes_1.mes_suj_identifiant = " & arr_param(0) & " " & _
  11.       "ORDER BY Mes_1.mes_date ASC" & _
  12.     " ) " & _
  13.     "ORDER BY Mes_1.mes_date DESC" & _
  14.    " )"


 
Essayes ça sur des index, c'est très rapide, et cela remplace le limit sans problème. Par contre, c'est beaucoup plus chaud à utiliser....

mood
Publicité
Posté le 22-01-2004 à 08:43:08  profilanswer
 

n°618980
MagicBuzz
Posté le 22-01-2004 à 15:03:40  profilanswer
 

++ pour gordon, parceque la méthode de jag est d'une lenteur abominable pour peut que tu as beaucoup de lignes. alors que celle-ci reste très rapide (ça ajoute à peine 10% de temps par rapport à un top x simple, alors que la méthode de jag est plutôt du style exponentielle au niveau temps.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MS-SQL] Comment faire le Limit [offset] du MySQL

 

Sujets relatifs
requete SQLpb pour se connecter de asp à mysql
aider moi a faire ma requete Sql Svp[Sql] Problème sur croisement de tables
Meilleure solution pour se connecter à MySQL avec C# .NET[SQL] Une histoire de requete et de date...
[MySQL] Modifier la valeur de l'AUTO_INCREMENT [résolu]SQL Serveur 2000: Select avec concaténation !
SQL : Initialisation des champs ajoutés par un ALTER TABLEpb de connection JAVA / MySQL
Plus de sujets relatifs à : [MS-SQL] Comment faire le Limit [offset] du MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR