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 :

Select dans IF possible ? [MySQL-8.0]


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Select dans IF possible ?
    Bonjour,

    J'ai une requête de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select 
      If(Instr(champ, '_toto_') > 0, SubString_Index(champ, 'toto', 1), "") As titi 
    from table1
    Si la chaîne contient « toto », la requête retourne ce qui précède « toto », sinon une chaîne vide.
    Ce qui est retourné correspond à un code.

    Supposons que j’aie une autre table (table2), constituée de 2 champs (champ_code et libellé_code).

    J’aimerais que la requête fasse ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select
        If(Instr(champ, '_toto_') > 0, 
     
    sélectionne dans table2 la valeur de  libellé_code pour laquelle champ_code est égal à « SubString_Index(champ, 'toto', 1) »
     
    , "") As titi from table1
    Est-ce que c’est possible ?

    Merci !

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Oui c'est possible, il s'agit d'une sous-requête. La sous-requête doit être entre ( ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT IF(POSITION(...) > 0, (TA SOUS-REQUETE SELECT CORRELEE), '')
    FROM ...
    Mais ce n'est peut-être pas la meilleure manière de faire.

    Tu pourrais faire, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    FROM table_1
    LEFT OUTER JOIN table_2 ON SUBSTRING_INDEX(...) = table_2.code;
    ... ou utiliser un WHERE EXISTS.

    Et encore mieux, isoler le code correctement, lui dédier une colonne, et l'utiliser directement sans calcul.


    PS : les chaînes doivent être délimitées par des ' et pas des "
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. Réponses: 8
    Dernier message: 05/05/2004, 16h28
  3. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  4. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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