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

Langage SQL Discussion :

order by avec varchar


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut order by avec varchar
    Bonjour,
    Voila j'ai une table contenant des departements dont la clé primaire est NumDepartement déclarée en varchar (pour integrer la corse en 2A et 2B), ma question est donc quel pourrait etre ma requete sql pour m'afficher mes departements et leur intitule dans le bon ordre a savoir:
    1
    2
    3
    .
    .
    .
    29
    2A
    2B
    30
    .
    .
    .

    Wala
    D'avance Merci!

  2. #2
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Ne pas mettre NumDepartement comme clef primaire.

    Une clef primaire Id_dep.
    Un champ NumDepartement (varchar 2).

    Exemple :

    Id_dep / NumDepartement
    1 / 01
    2 / 02
    ...
    29 / 29
    30 / 2A
    31 / 2B
    32 / 30
    ..

    Tu tries par : ORDER BY Id_dep ASC

    Et ça devrait afficher ce que tu veux

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    oui merci mais sans toucher a la structure de latble sans rajouter de champs...
    il n'y a pas un requete sql qui pourrait faire cela??

  4. #4
    Membre émérite
    Avatar de Kaamo
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    1 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 165
    Points : 2 778
    Points
    2 778
    Par défaut
    Je dis peut etre une bêtise mais je ne pense pas.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    c'est peut etre une bestise aussi mais c'est bien ce que je pensais...
    merci qd mm!

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 102
    Points
    102
    Par défaut
    Le problème n'est pas au niveau des "2A" et "2B". Les lettres ayant un plus fort poids que les chiffres lors du tri, elles se retrouvent naturellement en dernier.

    ...
    28
    29
    2A
    2B
    ...

    Le problème est que tous les départements commençant par "2" seront avant ceux commençant par "3" :

    ...
    2
    20
    21
    ...
    29
    2A
    2B
    3
    30
    31
    ...

    La réponse est donc : cela dépend de votre SGBDR (MySQL, Oracle, etc.). Vérifiez si votre système autorise le tri "naturel".

    1
    2
    3
    ...
    10
    11
    ...

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    je travaille avec ms sql server
    par contre comment je verifie ce "tri naturel"??

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 102
    Points
    102
    Par défaut
    Regardez dans la doc ! Il doit y avoir une section concernant les commandes de tri.

  9. #9
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 384
    Points
    28 384
    Par défaut
    Si tes codes de département sont enregistrés sous la forme 01, 02, ... tu pourras trier simplement tes lignes par ordre alphabétique

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 102
    Points
    102
    Par défaut
    Exact !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE <table départements> SET NumDepartement = '0' + NumDepartement WHERE LEN(NumDepartement) = 1;
    Cela devrait faire l'affaire.

Discussions similaires

  1. ORDER BY avec conditions
    Par carelha dans le forum Requêtes
    Réponses: 9
    Dernier message: 30/08/2007, 20h04
  2. [MySQL] Double order mais avec classement ASC ou DESC
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/08/2007, 23h04
  3. order by avec un union ALL
    Par roxxxy dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/03/2007, 15h59
  4. [MySQL] Requete avec Varchar()
    Par fearless dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 09/11/2006, 16h52
  5. ORDER BY avec un paramètre
    Par izou9002 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 17/02/2006, 15h37

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