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 :

IF dans une requête


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut IF dans une requête
    Bonjour tout le monde,

    J'ai une table CLIENTS avec les rubriques:
    IDCLIENT, NOMCLIENT, NUMLIEU
    Une autre table LIEUX avec les rubriques :
    IDLIEU,NOMLIEU

    Avec une commande du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT NOMCLIENT,NOMLIEU AS ENDROIT 
    FROM CLIENTS,LIEUX 
    Where CLIENTS.NUMLIEU=LIEUX.IDLIEU
    tout est ok , je peux afficher
    TOTO, PARIS
    LULU, MARSEILLE par exemple.

    Mon problème est le suivant :
    Je désire que, si CLIENTS.NUMLIEU contient un numéro spécifique (qui ne sera jamais dans la table LIEUX) , par exemple 999999, il fasse référence à un texte donné, par exemple ='SOUS LE SOLEIL', ma ligne de commande SELECT fonctionne.
    Par exemple, CLIENT contient :
    1,TOTO,1
    2,LULU,2
    3 TITI, 999999
    LIEUX contient :
    1,PARIS
    2,MARSEILLE
    Et que la requête renvoie :
    TOTO, PARIS
    LULU, MARSEILLE par exemple.
    TITI,SOUS LE SOLEIL

    Autrement dit, lorsque 999999 est rencontré, on utilise un IF ou CASE (j'imagine).
    Comme si dans la requête on pouvait mettre :
    SI NUMLIEU=999999 ALORS ENDROIT='SOUS LE SOLEIL'

    Est-ce faisable en une seule requête ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Si vous voulez faire ceci, c'est que vous avez un problème de modélisation.

    NUM_LIEU doit être déclaré comme clef étrangère vers la table LIEUX.


    À partir de là, le cas que vous présentez ne pourra pas arriver.


    Sinon, utilisez une jointure externe et un test case / when

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2012
    Messages : 144
    Points : 88
    Points
    88
    Par défaut JOINTURE EXTERNE
    Bonjour
    Ok, j'ai compris, et cela fonctionne
    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT NOMCLIENT,NOMLIEU AS ENDROIT,
     
    case 
      when client.numlieu<999999 then lieux.nomLieu
      when client.numlieu=999999 then 'Sous le soleil'
    end as Endroit
     
    FROM CLIENTS
     LEFT JOIN LIEUX 
    Where CLIENTS.NUMLIEU=LIEUX.IDLIEU

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

Discussions similaires

  1. Différence entre majuscule et minuscule dans une requête
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2004, 14h42
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31
  4. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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