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

SQL Procédural MySQL Discussion :

requete avec condition if


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut requete avec condition if
    bonjour,
    j'utilise une condition if dans une requete sql.Mais dans le partie traitement, je veux utiliser une requete mysql comme cette exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (select ( test= str )like'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1 THEN SET co=update  incident set test=(select substring(trim(substring_index(Test,'sur',-1)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI');
    .
    j'ai lancé mais aucun résultat et il m'affiche un problem au niveau du 'co=update...
    merci d'avance.

  2. #2
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Qu'essayez-vous de faire exactement (en mots)? Avez-vous un exemple de données et du résultat escompté?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    je veux exécuter la deuxième requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update  incident set test=(select substring(trim(substring_index(Test,'sur',-1)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI');
    si la condition suivante est vrai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select ( test= str )like'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1
    merci.

  4. #4
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    La sedonde requête ne fait absolument aucun sens. Pouvez-vous donner un exemple de ce que vous voulez faire avec quelques données, les vrais noms de colonnes et de tables, etc ??

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    je veux parcourir une colonne 'Title' d'une table 'incident'.
    cette colonne contient quelque information .Parmi ces informations, trois caractère qui indique la région .ces trois caractère sont généralement trouvé aprés ('sur', ':'). je veux éxécuter une fonction (mysql)qui permet :
    1) si les trois caractère pris de la colonne Title , qui sont située aprés 'sur', sont kef ou bej ou jen) donc le résultat va etre stockée dans une colonne 'test' dans la meme table.
    2) si la première n'est pas réalisée alors on prend les trois caractère , qui sont située aprés ':' et on le stocke dans une colonne 'test1' dans la meme table.

  6. #6
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Autre question : est-ce que ces codes de région (probablement ISO3166?) sont storés dans une autre table et, si oui, quel est le nom de la table et le nom de la cononne?

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    Oui, les codes de région (probablement ISO3166) sont storés dans la meme table 'incident' dans la colonne 'Title'.ce dernier contient un text qui contient le code de région

  8. #8
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Première chose à faire, il faudrait avoir une table séparée pour ces codes. Que se passe-t-il si on "extrait" le code 'ZZZ' (alors que ce n'est pas un code de pays) ?

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    j'ai essayé avec ce code mais pas de résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    delimiter |
    CREATE FUNCTION METTER0(s VARCHAR(2000)) RETURNS VARCHAR(2000)
    DETERMINISTIC
           BEGIN
                   DECLARE someLimit  INT;
                   DECLARE str  VARCHAR(2000);
                   DECLARE toFind  VARCHAR(2000);
                   DECLARE co VARCHAR(2000);
                   SET co=A;
                   SET toFind = s ;
                   SET someLimit =100;
                   SET someLimit = someLimit -1;
                   SET toFind = SUBSTRING(toFind,open);
                   SET close = locate(',',toFind);
         SET str =(select substring(trim(substring_index(Title,'sur',-1)),1,3) as n1 );
    IF (select(str)like'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1 THEN  update incident set test=(select substring(trim(substring_index(Test,'sur',-1)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI');
    ELSE IF (select substring(trim(substring_index(description,'du',-1)),1,3))=(ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB))=1 THEN  update  incident set test=(select substring(trim(substring_index(Test,'du',-1)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI');
    ELSE IF (select substring(trim(substring_index(description,':',-1)),1,3))=(ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB))=1 THEN SET co=update  incident set test=(select substring(trim(substring_index(description,'du',-1)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI'); 
    ELSE IF (select substring(trim(substring_index(description,'BSC',-6)),1,3))=(ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB))=1 THEN SET co=update  incident set test=(select substring(trim(substring_index(description,'BSC',-6)),1,3) as n1 ) WHERE  Affected_CI in('other ci','Other CI');
    ELSE co ='';
            SET toFind = SUBSTRING(toFind,close+1); 
                  END IF;
                   END WHILE;
                   return co;
           END |
    delimiter;

  10. #10
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Désolé pour le délai, j'ai dû travailler sur certains trucs pressants!

    J'ai bricolé un tout petit exemple, question qu'on se comprenne et qu'on parle exactement de la même chose. Mais avant tout, tu devras te créer une base de données appelée "sandbox". Tu pourras utiliser le script SQL à la fin de cette réponse. Mais avant de continuer, quelques questions s'imposent:

    1) Est-ce que le code de 3 lettres est toujours situé à la fin de la chaîne de caractères ou il peut se trouver en plein milieu (comme dans mes exemples)?
    2) Comment doit-on traiter si le code extrait de la colonne title s'il n'existe pas? (ZZZ dans mon exemple)
    3) Est-ce que cet UPDATE doit être fait en une seulle passe ou *un seul* SQL ?
    4) Est-on certain de ne trouver les délimiteurs "sur" et ":" que *une fois et une seule fois* dans la colonne "title" ?

    Dépendemment des réponses aux 4 question, la solution sera très facile ou assez complexe!

    Utiliser le script ci-dessous (qu'on pourra modifier selon tes réponses):
    -----------------------------------------------------------------------
    DROP TABLE IF EXISTS sandbox.regions;

    CREATE TABLE sandbox.regions (id INTEGER NOT NULL, code char(3) NOT NULL);

    INSERT INTO
    sandbox.regions (id, code)
    VALUES
    (1, 'FRA'),
    (2, 'CAN'),
    (3, 'USA'),
    (4, 'ESP'),
    (5, 'KEF'),
    (6, 'BEJ'),
    (7, 'JEN'),
    (8, 'RUS');

    DROP TABLE IF EXISTS sandbox.incidents;

    CREATE TABLE sandbox.incidents (id int(10) unsigned NOT NULL,
    title varchar(50) NOT NULL,
    test varchar(50) DEFAULT NULL,
    test1 varchar(50) DEFAULT NULL);

    INSERT INTO
    sandbox.incidents (id, title, test, test1)
    VALUES
    (1, 'bla bla bla sur BEJ bla bla bla', NULL, NULL),
    (2, 'un peu de texte : BEJ encore du texte', NULL, NULL),
    (3, 'du texte sur USA avec encore du texte', NULL, NULL),
    (4, 'encore du texte : USA et plus de texte', NULL, NULL),
    (5, 'code inexistant sur ZZZ et plus de texte', NULL, NULL),
    (6, 'code inexistant : ZZZ et encore plus de texte', NULL, NULL);

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    merci pour votre réponse et votre temps.
    je pense que tu n'as pas compris exactement mon problème.Elle est simple:
    je veux parcourir une colonne 'Title' d'une table 'incident'.
    cette colonne contient quelque information .Parmi ces informations, trois caractère qui indique la région .ces trois caractère sont généralement trouvé aprés ('sur', ':'). je veux éxécuter une fonction (mysql)qui permet :
    1) si les trois caractère pris de la colonne Title , qui sont située aprés 'sur', sont kef ou bej ou jen) donc le résultat va etre stockée dans une colonne 'test' dans la meme table.
    2) si la première n'est pas réalisée alors on prend les trois caractère , qui sont située aprés ':' et on le stocke dans une colonne 'test1' dans la meme table.
    voila la fonction que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    delimiter |
    CREATE FUNCTION METTER5(s VARCHAR(2000)) RETURNS VARCHAR(2000)
    DETERMINISTIC
           BEGIN
                 DECLARE open  INT;
                   DECLARE close  INT;
                   DECLARE someLimit  INT;
                   DECLARE str  VARCHAR(2000);
                    DECLARE str1  VARCHAR(2000);
                    DECLARE str2  VARCHAR(2000);
                    DECLARE str3  VARCHAR(2000);
                   DECLARE toFind  VARCHAR(2000);
                   DECLARE co VARCHAR(2000);
                   SET co=0;
                   SET open = 1;
                   SET close = 1;
                   SET toFind = s ;
                   SET someLimit =100;
                   SET str='';
                   SET str1='';
                   SET str2='';
                   SET str3='';
                   WHILE close > 0 and open > 0 and someLimit > 0 DO
                     SET someLimit = someLimit -1;
                     SET toFind = SUBSTRING(toFind,open);
                       SET close = locate('sur',toFind);
     
    SET str1 =substring(trim(substring_index(description,'du',-1)),1,3);  
    SET str2 =substring(trim(substring_index(description,':',-1)),1,3);
    SET str3 =substring(trim(substring_index(description,'BSC',-6)),1,3);
     
     
         SET str =SUBSTRING(toFind, 4, close-1);
    IF (str like ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB')=1 THEN set co = str ;
    ELSE IF (str not in 'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1 THEN set co = str1 ;
    ELSE IF (str1 not in 'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1 THEN SET co = str2 ;
    ELSE IF (str1 not in 'ZAG,TUN,TOZ,TAT,SOS,SIL,SFX,SBO,RNC,BAR,BEJ,BIZ,BSC,GAB,GAF,JEN,KAI,KAS,KEB,KEF,MAH,MED,MON,NAB')=1 THEN SET co = str3 ;
    ELSE set co = '1' ; 
           SET toFind = SUBSTRING(toFind,close+1);         
    END IF;
    END IF;
    END IF;
    END IF;
                  END WHILE;
                   return co;
           END |
    delimiter;
    et voila la requete sql a utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update incident set test =METTER5 (Title) WHERE  Affected_CI like 'other ci' and open_time between '2015-01-01' and '2015-01-30'
    merci d'avance.

  12. #12
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    J'ai très bien compris mais tu veux aller trop vite!

    Les fonctions de MySQL, ce n'est pas de la magie! Encore faut-il savoir qu'est-ce qu'on va trouver *exactement* dans la colonne title! Le problème est simple mais 95% du travail c'est de détecter et d'extraire le code de région avec tous les cas possibles!

    Par exemple

    'Le client est sur LUI que le problème est de notre côté. Transféré sur FRA' (présence de 2 "sur")
    'Client transféré sur FRA ' (espaces additionnels"
    etc.

    Aussi, si tu me dis que le UPDATE peut être fait en 2 requêtes SQL, la solution est extrêment plus facile!

    Bref, si tu veux que je t'aide, j'ai besoin des réponses à mes questions (ou un échantillon des données que tu as)

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    merci pour votre patient.
    1) Est-ce que le code de 3 lettres est toujours situé à la fin de la chaîne de caractères ou il peut se trouver en plein milieu (comme dans mes exemples)?
    reponse:généralement au milieu.
    2) Comment doit-on traiter si le code extrait de la colonne title s'il n'existe pas? (ZZZ dans mon exemple)
    reponse : je veux le filtrer
    3) Est-ce que cet UPDATE doit être fait en une seulle passe ou *un seul* SQL ?
    réponse: *un seul* SQL
    4) Est-on certain de ne trouver les délimiteurs "sur" et ":" que *une fois et une seule fois* dans la colonne "title" ?
    reponse: oui

  14. #14
    Membre régulier
    Homme Profil pro
    Analyste-programmeur
    Inscrit en
    Décembre 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2014
    Messages : 52
    Points : 112
    Points
    112
    Par défaut
    Est-ce qu'il y a une raison pour laquelle cet UPDATE doit *absolument* être fait en une seule requête? Des UPDATEs conditionnels (et sur plusieurs colonnes, encore pire), c'est ultra-inefficace et quasiment pas maintenable! La requête SQL risque de prendre une page de code indéchiffrable (et indébuggable).

    Bref, ce n'est vraiment pas l'idéal et le plus simple!

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 132
    Points : 67
    Points
    67
    Par défaut
    merci pour votre réponse.
    j'ai essayé avec ce code .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    delimiter |
    CREATE FUNCTION METTER25 (s VARCHAR(2000)) RETURNS VARCHAR(10000)
    DETERMINISTIC
           BEGIN
                 DECLARE open  INT;
                   DECLARE close  INT;
                   DECLARE someLimit  INT;
                   DECLARE str  VARCHAR(2000);
                   DECLARE str1  VARCHAR(2000);
                    DECLARE str2  VARCHAR(2000);
                    DECLARE str3  VARCHAR(2000);
                   DECLARE toFind  VARCHAR(2000);
                   DECLARE co VARCHAR(2000);
                   SET co='';
                   SET open = 1;
                   SET close = 1;
                   SET toFind = s ;
                   SET someLimit =100;
                   SET str='';
                   SET str1='';
                   SET str2='';
                  SET tofind=concat(tofind,'sur','');
     
      SET str1 =substring(trim(substring_index(s,'du',-1)),1,3);
      SET str2 =substring(trim(substring_index(s,':',-1)),1,3);
         SET str =substring(trim(substring_index(s,'sur',-1)),1,3);
    IF  (str in ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB')) =1 THEN set co = str ;
    ELSE IF ((str not in ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB')) and (str1 in ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB')))=1 THEN set co = str1 ;
    ELSE IF ((str1 not in ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB'))and (str2 in ('ZAG','TUN','TOZ','TAT','SOS','SIL','SFX','SBO','RNC','BAR','BEJ','BIZ','BSC','GAB','GAF','JEN','KAI','KAS','KEB','KEF','MAH','MED','MON','NAB')))=1 THEN SET co = str2 ;
    ELSE set co = '1' ; 
    END IF;
    END IF;
    END IF;
     
                   return co;
           END |
    delimiter;
    il prend la condition 1 'str'.mais le problème est qu'il ne prend ni la cindition 'str1',ni 'str2'.

  16. #16
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Essayez avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CASE
        WHEN condition 1 THEN resultat 1
        WHEN condition 2 THEN resultat 2
        -- etc
        ELSE resultat si aucune condition satisfaite
    END
    Je ne sais pas si on peut utiliser ça en dehors d'une requête mais comme c'est du SQL, ça devrait être possible.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. requete avec condition
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 13/08/2007, 11h32
  2. Requete avec condition sur une partie de l'affichage
    Par dinver78 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2007, 09h19
  3. Requete avec condition interne
    Par inge2007 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/02/2007, 14h29
  4. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18
  5. Requete avec condition
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/06/2005, 09h37

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