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 :

[SQLSERVER 2005] Problème de tri lors de sélection de plusieurs id


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [SQLSERVER 2005] Problème de tri lors de sélection de plusieurs id
    Bonjour.

    J'ai une procédure stockée qui prend en paramètre une liste d'ID et qui renvoi les lignes correspondantes de ma table. Seulement j'aimerai que les lignes renvoyées soient dans le même ordre que les IDs dans la liste.

    Ma procédure stockée est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    ALTER PROCEDURE [dbo].[MaProcedure] 
     
    	@trucIds varchar(MAX)
     
    AS
    DECLARE
     
    	@sql nvarchar(3250)
     
    BEGIN
     
    	SET NOCOUNT ON;
     
    	SET @sql = '
    	SELECT	*
    	FROM	ma_table
    	WHERE	id IN (' + @trucIds + ')'
     
    END
     
    EXEC sp_executesql @sql
    Lorsque je passe en paramètre à cette procédure '854554, 1' par exemple il me renvoi deux lignes, la première celle qui correspond à l'ID 1 et la deuxième celle à l'ID 854554 or je voudrais garder l'ordre initial.

    Y a t il une solution? Merci!

  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 847
    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 847
    Points : 52 962
    Points
    52 962
    Billets dans le blog
    6
    Par défaut
    dans ce cas ,créez une table temporaire, remplissez là avec vos id avec en sus une colonne d'ordonnancement. Faites une requête avec jointure et order by.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE #ids (id int, ordre int)
    INSERT INTO #ids VALUES (854554, 1)
    INSERT INTO #ids VALUES (1, 2)
    SELECT T.*
    FROM MATABLE T
           INNER JOIN #ids i
                 ON T.id = i.id
    ORDER BY ordre
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. MS SqlServer 2005: problème de connect
    Par agdid04 dans le forum Administration
    Réponses: 2
    Dernier message: 20/04/2010, 17h29
  2. SqlServer 2008 Problème de tri
    Par MKiwi dans le forum Développement
    Réponses: 2
    Dernier message: 27/07/2009, 13h51
  3. [SQLSERVER 2005] Problème de connexion.
    Par GarsDuCalvados dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/07/2007, 11h37
  4. Réponses: 1
    Dernier message: 09/08/2006, 17h05
  5. Réponses: 3
    Dernier message: 14/11/2005, 19h24

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