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 :

[MySQL] SELECT CONCAT IFNULL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut [MySQL] SELECT CONCAT IFNULL
    Bonjour

    J'eesaye de concatener deux champs mais si le deuxieme est vide, le resultat est vide
    J'ai essayé de tester IFNULL mais sans resultat dans la requete ci apres si `address`.`Omschrijving`
    est vide le resultat du concat est vide

    Ou est l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT
    `address`.`Y`,
    `address`.`X`,
    CONCAT(`tours`.`addrID`,'-', IFNULL(`address`.`Omschrijving`,"aa") )
    FROM
    `tours`
    Inner Join `address` ON `tours`.`addrID` = `address`.`addrID`
    WHERE
    `tours`.`chauffeurID` =  '8'

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    ça devrait marcher... c'est du MySQL ?

    Si oui, tu peux également tester ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CONCAT(`tours`.`addrID`,'-', COALESCE(`address`.`Omschrijving`,'aa') )
    -- ou bien sans le aa 
    CONCAT_WS('-', `tours`.`addrID`, `address`.`Omschrijving` )

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Non toujours pas
    Merci Antoun

    Oui c'est du MySql, 5.0.8
    Et ca ne marche pas plus

    J'ai essayé tes deux syntaxes : toujours le meme resultat si `address`.`Omschrijving` est vide le resultat est vide aussi or dans la DB, j'ai TOUJOURS une valeur pour `tours`.`addrID`, et j'aimerais au moins voir cette valeur

    ATTENTION : je viens de constater que Omschrijving n'est pas NULL mais ==''

    si je fais select where Omschrijving = NULL : rien
    mais SELECT WHERE Omschrijving <= '' alors je vois les rows concerné

    Mais ca ne me donne toujours pas la solution

    Est ce que le probleme viendrait de la ifférence de type : integer + varchar

    Par la meme occasion est il possible de formatter addrID (integer) sur n digits ?

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut J'ai trouvé
    Le probleme n'etais pas le champ vide mais la concatenation d'un integer avec un varchar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONCAT_WS('-', CAST(`tours`.`addrID` as CHAR), address`.`Omschrijving` )
    Ca ca marche !!

  5. #5
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Par défaut
    C'est bizarre ton truc... quel est ton sql_mode ?
    Sinon, qq infos au passage :

    Citation Envoyé par olibara
    ATTENTION : je viens de constater que Omschrijving n'est pas NULL mais ==''
    attention, pas de == en SQL, seulement =
    Citation Envoyé par olibara
    si je fais select where Omschrijving = NULL : rien
    = NULL ne marche jamais, il faut utiliser IS NULL

    Enfin, comme tu es relativement nouveau, je précise que pour présenter ton code il faut utiliser les balises [CODE][/CODE] ou le bouton #, et quand un problème est réglé, il faut cliquer sur .
    Bienvenue sur le forum !

  6. #6
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut sql_mode
    Bonsoir
    Voici le resultat de
    STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION


    Petite precisions

    1- Je faisait bien ISNULL mais l'habitude du C me fait ecrire autre chose
    2- select where '' ne me donnait que les lignes ou le champ etait vide (AUCUNES n'avait le champ NULL)
    3- Le probleme de concaténation survenait meme si omschrijving contenait qq chose mais pas systematiquement

    A mon avis c'est bien la valeur dans le int qui posait probleme

    J'ai retiré résolu puisque tu trouve la solution anormale
    Par la meme occasion est-il possible de formater l'integer su N digits ?

Discussions similaires

  1. MySQL : SELECT multitable avec problème de AND
    Par superyan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/02/2007, 16h16
  2. Réponses: 4
    Dernier message: 24/11/2006, 16h57
  3. [MySQL] selection de produits commencant par 2 chiffres
    Par freija dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/08/2006, 10h34
  4. [Mysql] Selection de ligne
    Par JCD_31 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/06/2006, 15h41
  5. [mysql]SELECTION couple distinct
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 2
    Dernier message: 06/10/2005, 09h32

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