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 :

Faire un ORDER BY selon le type de données et non la donnée elle même


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Points : 55
    Points
    55
    Par défaut Faire un ORDER BY selon le type de données et non la donnée elle même
    Bonjour à tous,

    Je suis actuellement sur une requête dans laquelle je dois ordonner les données selon le type de données que j'ai et non pas la donnée elle même.

    Exemple, j'ai 2 tables :

    Voiture (voiture_id, voiture_libelle, voiture_id_typevoiture)
    Type_voiture (typevoiture_id, typevoiture_libelle)

    Dans Type_voiture, j'ai "TypeA", "TypeB", "TypeC"
    et dans Voiture, j'ai "Voiture1 > TypeC", Voiture2 > TypeA", "Voiture3 > TypeB"

    L'ordre dans lequel je veux afficher mes données est :
    "Voiture2 > TypeA"
    "Voiture3 > TypeB"
    "Voiture1 > TypeC"

    C'est à dire dans l'ordre TypeA, TypeB, TypeC

    Ce n'est pas un ordre alphabétique que je veux mais un ordre défini selon le type de voiture.

    Je vois la solution du SELECT avec des UNION, mais je me demande s'il n'y a pas un autre moyen. Je suis en SQL-SERVER mais je voudrais éviter les IIF pour garder un langage portable sur d'autres langages SQL que Transaqt-sql de Sql Server.
    Car sinon je voyais bien une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT voiture_id, voiture_libelle, IF(voiture_id_typevoiture=id_TypeA, "1") ELSE IF (voiture_id_type_voiture=id_TypeB, "2") ELSE (voiture_id_typevoiture=id_TypeC, "3") AS ordre ....... ORDER BY ordre
    D'avance merci,

    François

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    ton modèle de donnée est vraiment à revoir, tu ne respectes même pas la première forme normale.

    Désolé on ne peut pas grand chose pour toi.

  3. #3
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Il faut utiliser CASE WHEN qui est standard.

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    Bonjour Mathusalem,

    merci de m'avoir donné tes précieux conseils.

    Par contre, merci à phili_b qui a répondu à ma question.
    J'ai intégré les CASE et ça marche bien merci.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    Ah oui pour info, les exemples de tables que j'ai donné et la requête également ne sont que pur exemple (avec faute de syntaxes volontaire, c'était pour donner un schéma d'idée), ce ne sont pas les tables surlesquels je travaille en réalité.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 70
    Points : 55
    Points
    55
    Par défaut
    Ah ça y est j'ai compris pourquoi Mathusalem dit que je ne respecte pas la 1ere forme normale ! J'étais en train de me demander ce qui m'arrivait.

    Donc, pour infos encore, là où j'ai mis :

    et dans Voiture, j'ai "Voiture1 > TypeC", Voiture2 > TypeA", "Voiture3 > TypeB"
    Ce n'est pas ce que je voulais dire du tout. Je voulais dire :

    et dans Voiture, j'ai "Voiture1", "id TypeC"etc..
    En fait comme je donnais un pur exemple, je voulais donné une idée de mes données, mais je sais très bien faire des tables et des requêtes, j'en mange tous les jours merci. Par exemple là encore quand je met "id TypeC" il est bien entendu que je parle d'un ID entier..
    Maintenant, je voulais juste gagner un peu du temps dans la rédaction de mon message, mais je suis en train d'en perdre autant à me justifier.
    La prochaine fois, je ferai eds vrais tables avec des vrais données, c'est entendu

    Bref..

  7. #7
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    ahhh d'accord,
    désolé j'ai été un peu vite.

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

Discussions similaires

  1. [Serialisation] Comment faire dynamiquement selon le type ?
    Par eric.charbonnier dans le forum Framework .NET
    Réponses: 7
    Dernier message: 01/02/2008, 15h17
  2. [débutant]Faire apparaître X champ selon un nombreX
    Par Hastur dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 06/09/2005, 13h45
  3. faire un ORDER BY sur COUNT(*)
    Par adilou1981 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/05/2005, 11h46
  4. [CR] Comment faire deux order by suivant un parametre?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 15/09/2004, 16h28
  5. Faire un ORDER BY sur un champ
    Par Jeankiki dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/05/2004, 23h59

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