IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL 2005] Tri & Pagination, quelle méthode?


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut [SQL 2005] Tri & Pagination, quelle méthode?
    Bonjour,

    J'ai une procédure stockée qui doit me retourner X éléments à partir de la ligne Y (fonction LIMIT de MySQL) avec un tri sur le champs A de direction B. Toutes ces variables sont des paramètres INPUT de ma procédure stockée.

    J'ai essayé plusieurs méthodes (row_number, select top, etc) mais aucune n'a marché à 100% : soucis sur mon tri avec row_number, select top sortait des résultats fantaisistes. Bref : ca ne me convient pas.

    Je me suis dit que j'ai une solution très "débrouillarde" mais serait-elle utile (perf notemment) : pourquoi ne pas faire autant de procédures stockées que de tri comme ca je pourrais utiliser ROW_NUMBER (qui fonctionne pour la limitation de résultats mais pas du tout pour mon tri)?

    Vous en pensez quoi?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/SQL_Server_2K5/N1.php
    § 1.7 Fonctions de classement et d'énumération (norme SQL:2003) :
    exemples 1 et 2

    A +

  3. #3
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut
    Effectivement mais il me reste le soucis du tri et de la direction de mes résultats. On va dans un premier temps s'occuper juste du champs à trier (sans la direction) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ROW_NUMBER() OVER (ORDER BY 
    		CASE WHEN @Field = 'Name' THEN Event.event_name END,
    		CASE WHEN @Field = 'Date' THEN Event.event_name END
    	) as RowNumber
    Ca ne marche pas avec le CASE car ca tri avec le primary key (Event.id_event). Or si je mets directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ROW_NUMBER() OVER (ORDER BY Event.event_name) as RowNumber
    CA MARCHE Mais moi je veux trier selon l'argument passé à la procédure stockée.

    Vous avez une idée?

  4. #4
    Membre du Club
    Profil pro
    Webmaster
    Inscrit en
    Mars 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2006
    Messages : 88
    Points : 50
    Points
    50
    Par défaut
    Quelqu'un aurait une réponse? Comment se fait-il que tout marche bien lorsque je mets le nom de la colonne directement dans le ORDER BY de mon OVER() ; et, que lorsque je mets un CASE le tri ne fonctionne pas?

Discussions similaires

  1. [SQL 2005] problème de date et de tri
    Par phoenix75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 23/12/2008, 15h21
  2. [C#2005] Quelle méthode utiliser
    Par Herlece dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2008, 10h31
  3. [C#] Form : Quelles méthodes ? Close, Dispose, Show, Hide
    Par TheSeb dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/05/2005, 16h42
  4. [persistance]Quelle méthode utiliser ?
    Par le Daoud dans le forum Persistance des données
    Réponses: 9
    Dernier message: 15/11/2004, 09h29
  5. code récurrent, quelle méthode utiliser ?
    Par khayyam90 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo