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 :

Comment faire un ORDER BY dynamique avec une direction?


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 Comment faire un ORDER BY dynamique avec une direction?
    Bonjour à tous,

    Je travaille en ASP.NET 2.0 (C#) et sous MS-SQL 2005. J'ai une Procédure Stockée qui est appellée avec commes paramètres :
    • @sortDir : direction du tri (ASC / DESC)
    • @sortField : la colonne ou l'alias du SELECT qui sera utilisé pour le tri
    Je souhaite effectuer dynamiquement la clause ORDER BY de ma requête SQL.. On ne peut pas utiliser directement un Alias dans la clause ORDER BY donc j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ORDER BY
    	CASE @sortField
    		WHEN 'Name' THEN event_name
    		WHEN 'Date' THEN dt_stopreg
    		WHEN 'Rank' THEN (SUM(rank_votes) / SUM(rank_nbvotes))
    		WHEN 'Amount' THEN SUM(amount)
    		WHEN 'Nb' THEN COUNT(id_b)
    	END
    Le soucis est que je ne peux pas ajouter à la suite un autre CASE @sortDir car ca me met une erreur. Donc, comment faire en sorte (sans construire une String qui contient la requete) pour ajouter simplement le ASC/DESC?

    Merci d'avance :-)

  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 938
    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 938
    Points : 51 773
    Points
    51 773
    Billets dans le blog
    6
    Par défaut
    soit vous imbriquez un second case dans chaque predicat des branches WHEN de votre actuel CASE, soit vous utilisez du SQL dynamique.

    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
    Et inclure un second CASE dans chaque branche WHEN, ca ne va pas faire une énorme baisse de perfs? Merci en tout cas!

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    La baisse de performances est déjà bien commencée avec le premier CASE...

  5. #5
    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
    Oui mais un moment donné on a plus le choix. Comment faire un tri sans faire une baisse de performences qui selon moi est inhérante?

Discussions similaires

  1. Comment faire du Binding côté XAML avec une archi n-tier?
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 30/03/2011, 00h31
  2. Comment coder une requete dynamique avec une Variable binaire.
    Par BoromSikim dans le forum Développement
    Réponses: 11
    Dernier message: 03/03/2009, 18h17
  3. Réponses: 3
    Dernier message: 03/02/2007, 01h12
  4. Comment créer un site immobilier dynamique avec une base de données ?
    Par Alain troverti dans le forum Général Conception Web
    Réponses: 14
    Dernier message: 07/07/2006, 22h57

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