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

 MySQL Discussion :

Sélection d'une 2ème colonne si la première est vide


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 22
    Points : 17
    Points
    17
    Par défaut Sélection d'une 2ème colonne si la première est vide
    Bonjour à tous.

    J'ai une table dans laquelle j'ai deux différents champs date. Je souhaiterais effectuer un SELECT sur la deuxième colonne date si la première est vide. Comment écrire cette condition ?
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT (IF EMPTY(date1) THEN (date2)) AS dare_ref
    Je vous remercie de votre attention.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 176
    Points : 301
    Points
    301
    Par défaut
    Bonsoir,

    La fonction coalesce() devrait vous plaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  COALESCE(date1, date2) AS dare_ref

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Bonsoir serval92.

    Il y a plusieurs réponses à ta question et cela dépend aussi comment tu as déclaré ta date dans ta table mysql.

    1) la réponse de MacFly58 est tout à fait correcte, mais cela suppose que date possède la valeur NULL, ce qui n'est pas forcément le cas.

    2) si la valeur par défaut qui est renseignée dans la date, est zéro --> '0000-00-00',
    alors un 'if' peut récupérer le résultat de ce que tu cherches à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(date1='0000-00-00',date2,date1) as 'date';
    3) une autre solution, un peu plus bavarde, consiste à utiliser un 'union'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select date1  from nom_de_ta_table  where date1 <> '0000-00-00'
    union
    select date2 from nom_de_ta_table  where date1 = '0000-00-00';
    4) encore une autre solution consiste à utiliser un case :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select case date1 when '0000-00-00' then date2 else date1 end as date
    from nom_de_ta_table;
    5) et pour terminer, récupère tes deux dates en mysql, et fais la sélection en PHP.
    Il n'est pas anodin en terme de performance de faire ce genre de test en mysql.

    Juste une question : pourquoi ta date1 n'est pas renseignée ?

    J'espère avoir répondu à ton attente.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Réponses: 12
    Dernier message: 23/04/2014, 16h54
  2. Réponses: 4
    Dernier message: 14/06/2013, 14h29
  3. Réponses: 6
    Dernier message: 08/04/2013, 17h36
  4. Sélection d'une ligne/colonne
    Par Jongu dans le forum SAP
    Réponses: 3
    Dernier message: 07/12/2012, 12h22
  5. critère de sélection sur une seule colonne
    Par ivan54 dans le forum Requêtes
    Réponses: 22
    Dernier message: 13/01/2009, 19h44

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