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 :

CONCAT & Booléen


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut CONCAT & Booléen
    Salut à tous,

    Ma requête actuelle est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_offre, CONCAT(poste_offre,' (',debut_publication_offre,')',etat_offre), debut_publication_offre FROM tblOffre ORDER BY 3
    etat_offre est un booléen. J'aurai voulu afficher Pourvu quand etat_offre est vrai, et non pourvu quand etat_offre est faux. Y-a-t-il un moyen ?

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut
    essaye avec un case


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    SELECT id_offre, case etat_offre when 0 then
     poste_offre +' (' + debut_publication_offre+')' + 'non pourvu' 
    else
    poste_offre +' (' + debut_publication_offre+')' + 'pourvu' 
    end as toto
     , debut_publication_offre FROM tblOffre ORDER BY 3

  3. #3
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut
    la requete telle quelle ne marche pas mais je vais chercher dans cette direction. Merci !

  4. #4
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Salut,

    Si tu utilise MySQL, tu as la fonction ELT qui peut te servir.

  5. #5
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut
    Citation Envoyé par Adjanakis
    Salut,

    Si tu utilise MySQL, tu as la fonction ELT qui peut te servir.
    Merci j'ai essayé, mais ca marche seulement si le booleen est à vrai car il vaut 1 à ce moment là. Sinon quand il vaut faut, la fonction renvoie null et du coup la requête ne renvoie rien... Dommage, c'était vraiment pas loin !

  6. #6
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Avec des UNION c'est pas possible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id_offre, 'pourvu', debut_publication_offre
    FROM tblOffre
    WHERE etat_offre=true
     
    UNION
     
    SELECT id_offre, 'non pourvu', debut_publication_offre
    FROM tblOffre
    WHERE etat_offre=false
     
    ORDER BY debut_publication_offre
    : En plus c'est performant qu'avec un CASE

  7. #7
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut
    Ca ne marche pas non plus avec les unions ... :-(

    En fait, il faut que ce soit le deuxème champs du select qui donne le résultat à afficher à l'écran.

    Donc ce que je suis arrivé à faire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_offre,CASE etat_offre WHEN 0 THEN 'Pourvu' ELSE 'Non pourvu' END AS toto, debut_publication_offre FROM tblOffre
    Mais là ca ne m'affiche que Pourvu et Non pourvu...

    Si j'essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_offre,CASE etat_offre WHEN 0 THEN CONCAT(debut_publication_offre,'Pourvu') ELSE 'Non pourvu' END AS toto, debut_publication_offre FROM tblOffre
    Ca ne marche plus dès qu'il y a le concat :-(

  8. #8
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 31
    Par défaut
    pourquoi tant de haine contre l'addition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT id_offre,CASE etat_offre 
    WHEN 0 THEN
     cast(debut_publication_offre as varchar) + 'Pourvu' 
    ELSE
     'Non pourvu' 
    END AS toto, debut_publication_offre
     FROM tblOffre

  9. #9
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Il y a un truc qui me turlupine, tu utilises quoi comme SGBD parce que si tu utilises un MySQL dont la version est inférieure à la 4.0 OK, par contre, si ce n'est pas le cas, cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT id_offre, 'pourvu', debut_publication_offre
    FROM tblOffre
    WHERE etat_offre=0
     
    UNION
     
    SELECT id_offre, 'non pourvu', debut_publication_offre
    FROM tblOffre
    WHERE etat_offre=1
     
    ORDER BY debut_publication_offre
    n'a aucune raison de ne pas fonctionner C'est quoi le message d'erreur :

  10. #10
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Citation Envoyé par gibet_b
    Citation Envoyé par Adjanakis
    Salut,

    Si tu utilise MySQL, tu as la fonction ELT qui peut te servir.
    Merci j'ai essayé, mais ca marche seulement si le booleen est à vrai car il vaut 1 à ce moment là. Sinon quand il vaut faut, la fonction renvoie null et du coup la requête ne renvoie rien... Dommage, c'était vraiment pas loin !
    J'ai oublié de te préciser une astuce que m'a enseigné mon grand père chinois . Un booléen étant un nombre, tu peux lui additionner 1. Et chez moi, dans mes ELT, j'apprécie ainsi d'avoir des FALSE=1 et TRUE=2

  11. #11
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut
    Citation Envoyé par trotters213
    C'est quoi le message d'erreur :
    La requête marche très bien dans PHPMyAdmin mais j'utilise un script PHP déjà développé qui en fait utilise le deuxième champs de la requête passé en parametre de ce script pour l'affichage dans une listebox...

  12. #12
    Membre éclairé Avatar de gibet_b
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 292
    Par défaut
    Bon ayé, j'ai trouvé la requête qui va bien ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_offre,ELT(etat_offre+1,CONCAT(poste_offre,' : 'pourvu'),CONCAT(poste_offre,' : Non pourvu')), debut_publication_offre FROM tblOffre;
    Merci à tous !

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

Discussions similaires

  1. booléens en mySQL
    Par nako dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 19/10/2009, 18h23
  2. Fonction CONCAT
    Par Vow dans le forum Langage SQL
    Réponses: 12
    Dernier message: 08/02/2005, 18h53
  3. lcase() traduit les booléens en francais !
    Par EvilAngel dans le forum ASP
    Réponses: 8
    Dernier message: 15/06/2004, 16h53
  4. requete sql : un vrai "et" booléen
    Par claquetteman dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/04/2004, 14h54

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