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 :

WHERE 'champ' EST CONTENU DANS 'donnée'


Sujet :

Requêtes MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut WHERE 'champ' EST CONTENU DANS 'donnée'
    Bonjour,

    existe-t'il un mot clé comme LIKE '%xxx%' mais qui voudrait dire :
    WHERE 'champ' EST CONTENU DANS 'donnée' ??

    Contexte :
    J'ai réalisé une application de compte.
    Je récupère des fichiers .csv (historique de compte) sur le site de ma banque, et mon application les ajoutes dans une base de donnée.
    Le libellé d'une transaction est du type : CB ZARA FACT0001234
    Tous mes achats dans cette boutique commenceront de la mm façon mais le numéro de FACT va changer.

    J'aimerai faire une catégorisation automatique.
    Pour cela j'ai créé une table de jonction avec une colonne libelle qui contient CB ZARA et une colonne qui correspond à l'ID d'un catégorie (vêtement).

    Comment puis-je donc réaliser cette requete :
    WHERE 'libelle' ????? 'CB ZARA FACT0000321'
    dans ce cas, si libelle==CB ZARA la clause doit me retourner true

    merci pour votre aide !

  2. #2
    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
    Je ne comprends pas pourquoi tu ne peux pas utiliser LIKE.

    Si tous les libellés commençant par 'CB ZARA' doivent aller en catégorie vêtement, tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE libelle LIKE 'CB ZARA%'
    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 !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    En fait je récupère des libellés qui vont être par exemple :
    CB ZARA FACT000123
    CB AUTRE MARQUE
    CHEQUE0001
    CB ZARA FACT004512
    RETRAIT GAB 010110

    Pour chacune de ces données, je veux voir si la base contient une association vers une catégorie.
    Comme seule une partie du libelle est fixe (et pas toujours la même suivant les boutique) ma table indique : CB ZARA (partie fixe) == idcategorie 2 (vetements).

    Du coup je ne peux pas utiliser la requête que tu me proposes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE libelle LIKE 'CB ZARA%'
    Il me faudrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE %libelle% LIKE 'CB ZARA FACT004512'
    Mais évidemment cette forme n'existe pas !

    J'ai résolu mon problème en gérant cette requete dans le code de mon application au lieu de ma requete SQL.
    En gros je crée un tableau contenant toutes les jonctions possible, puis je vérifie via une boucle si mon libelle EST CONTENU DANS ma donnée.

    Mais j'aurais préféré faire ça directement dans ma requête...

  4. #4
    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
    Je trouve ta façon de faire bizarre ou alors je n'ai pas compris mais je crois que tu peux essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE 'CB ZARA' LIKE '%' || libelle || '%'
    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 !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Alors merci bien !

    Ta réponse n'a pas fonctionné tel quel car elle me retournait tous les enregistrements de ma table, par contre j'ai pu utiliser ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE 'CB ZARA   FACT00000' LIKE CONCAT ('%', libelle, '%')
    J'avoue en effet :
    Je trouve ta façon de faire bizarre ou alors je n'ai pas compris
    Je ne dis pas le contraire !!
    D'ailleur, la preuve en est que j'ai eu du mal à suivre l'enseignement présent dans ta signature lors de la rédaction de mes posts.

    Dans tous les cas merci pour ton aide !

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

Discussions similaires

  1. [Toutes versions] Mettre le focus sur un champ dont le nom est contenu dans une variable
    Par possible924 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/04/2015, 21h32
  2. Réponses: 1
    Dernier message: 22/05/2006, 07h16
  3. [VBA-E] Savoir si une cellule est contenue dans une plage
    Par psych0o0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/05/2006, 14h12
  4. Réponses: 7
    Dernier message: 25/10/2005, 15h19
  5. [Reflection] Executer une fonction dont le nom est contenu dans un String
    Par christobal dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/07/2004, 15h23

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