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

Requêtes MySQL Discussion :

afficher des ligne d'une table avec certaines priortités


Sujet :

Requêtes MySQL

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 750
    Points : 356
    Points
    356
    Par défaut afficher des ligne d'une table avec certaines priortités
    Bonjour,
    J'ai la table mySQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client(id, nom, adresse, cp)
    Je voudrais écrire une requete qui affiche tout les client mais avec une certaine contrainte : afficher en priorité (en tete de liste) les client dont le code postal (cp) = 04, 05 ou 15...est-ce possible ?

    Merci
    '...parfois l'informatique peut vous rendre fou...'

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Tu dois pouvoir faire un truc dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *, CASE WHEN cp IN(04,05,15) THEN 5 ELSE 1 END AS ordre FROM Client ORDER BY ordre DESC
    Remarque : tu peux mettre plusieurs condition dans le CASE par exemple si tu veux l'ordre 04, 05,15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     CASE WHEN cp=4 THEN 10 WHEN cp=05 THEN 9 WHEN cp=15 THEN 5 ELSE 1 END AS ordre
    "Quand tu eclaire la lanterne de quelqu'un, la seule chose que tu perds, c'est le pouvoir que tu avais sur lui"

  3. #3
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 750
    Points : 356
    Points
    356
    Par défaut
    la 1ere requete marche à merveille cependant je n'ai pas compris ce que fait la requete je suis allé voir la doc de mySql mais j'ai pas trouvé grand chose sur CASE...quelqu'un peut m'expliquer svp ? merci

    PS : on m'a fournis une autre soluce plus simple à comprendre : fusionner deux requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ( SELECT *
    FRom client
    WHERE cp IN (83,84) ) 
    UNION 
    ( SELECT *
    FRom client
    WHERE cp NOT IN (83,84)  )
    '...parfois l'informatique peut vous rendre fou...'

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2004
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Case renvoie différente valeurs selon certaine condition

    l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN cp=4 THEN 10 WHEN cp=05 THEN 9 WHEN cp=15 THEN 5 ELSE 1 END AS ordre
    equivaut a (pseudo code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si cp==4 alors ordre=10;
    Si cp==5 alors ordre =9
    Si cp==15 alors ordre=5
    Sinon ordre=1;
    Ensuite on trie selon ordre.

    Le premier exemple était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CASE WHEN cp IN(04,05,15) THEN 5 ELSE 1 END AS ordre
    Qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Si cp dans l'ensemble (04,05,15) alors ordre =5
    Sinon ordre =1;
    Voila, j'espère que c'est plus claire maintenant
    "Quand tu eclaire la lanterne de quelqu'un, la seule chose que tu perds, c'est le pouvoir que tu avais sur lui"

  5. #5
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 750
    Points : 356
    Points
    356
    Par défaut
    merci
    '...parfois l'informatique peut vous rendre fou...'

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/11/2013, 15h21
  2. [Doctrine] Afficher le nom des colonnes d'une table avec doctrine
    Par darkcrift dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/05/2013, 11h19
  3. [WD15] Enregistrement des lignes d'une table avec condition
    Par bestmoroco dans le forum WinDev
    Réponses: 7
    Dernier message: 11/12/2012, 08h20
  4. Afficher la somme des lignes d'une table
    Par DJERDJAR YACINE dans le forum Bases de données
    Réponses: 5
    Dernier message: 23/07/2007, 19h18
  5. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 16h34

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