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

Développement SQL Server Discussion :

SqlServer 2008 Problème de tri


Sujet :

Développement SQL Server

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut SqlServer 2008 Problème de tri
    Bonjour à tous,

    Je fais la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM A, B, C
    WHERE A.ID = C.ID
    AND A.STP_CODE = B.STP_CODE
    ORDER BY B.STP_LIB
    Cela me trie les résultat par B.STP_LIB

    Je ne veux que les 50 premiers résultats, je rajoute donc TOP 50
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TOP 50 *
    FROM A, B, C
    WHERE A.ID = C.ID
    AND A.STP_CODE = B.STP_CODE
    ORDER BY B.STP_LIB
    et là ça me trie bien mes résultats mais lorsqu'il y a la même valeur dans la colonne STP_LIB, les résultats ne sont pas dans le même ordre que lors de la première requête. Je ne sais pas si c'est très clair, je vais faire un petit schéma pour mieux expliquer (ce sera peut-être mieux... lol)

    A gauche, ma première requête et a droite ma deuxième requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ID     TITLE     STP_LIB  |   ID     TITLE     STP_LIB
    21     title21     lib2   |   21     title21     lib2
    1      title1      lib2   |   1      title1      lib2
    5      title5      lib3   |   89     title89     lib3
    56     title56     lib3   |   56     title56     lib3
    89     title89     lib3   |   48     title48     lib3
    48     title48     lib3   |   5      title5      lib3
    12     title12     lib3   |   12     title12     lib3
    Ils sont bien triés par ordre croissant de STP_LIB mais les données ne sont pas dans le même ordre et c'est un problème pour moi car comme je fais un système de pagination, il est possible que les données se retrouvent dans deux pages différentes.

    Je ne comprend pas que prendre seulement les X premiers résultats fait que ça change l'ordre des résultats.

    Voila si quelqu'un trouve une solution...

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 126
    Points : 143
    Points
    143
    Par défaut
    Bonjour,

    Entre vos deux résultats, lequel est selon vous le plus "juste" et pourquoi ?

    La solution est d'ajouter une nouvelle colonne dans votre clause ORDER BY, c'est à dire celle qui vous semblera la plus pertinente tel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT TOP 50 *
    FROM A, B, C
    WHERE A.ID = C.ID
    AND A.STP_CODE = B.STP_CODE
    ORDER BY B.STP_LIB, ma_table.TITLE
    Pour bien appréhender les problématiques de tri, je vous recommande cet article.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci à toi d'avoir répondu aussi vite =)

    Bon effectivement, la solution est d'ajouter une nouvelle colonne
    Merci pour l'article, cela m'a aidé a mieux comprendre les tris

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème au niveau de SQLSERVER 2008.
    Par mouad70 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 04/06/2014, 15h33
  2. [SQLServer 2008 R2] Problème de blocage - code erreur 1222
    Par Marco46 dans le forum Développement
    Réponses: 5
    Dernier message: 03/02/2011, 11h07
  3. Réponses: 1
    Dernier message: 21/03/2007, 15h04
  4. [Collections] Problème de tri
    Par feti2004 dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 03/08/2004, 16h45
  5. problème de tri et optimisatiopn
    Par psyco2604 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 13/05/2004, 10h44

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