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 :

Recherche d'une liste de mots dans une chaine


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut Recherche d'une liste de mots dans une chaine
    Bonjour,

    J'ai un problème qui se pose à moi et j'aimerais savoir s'il est possible de le régler en MySQL.

    Mon problème :
    J'ai deux tables distinctes qui se composent comme suit :
    table A :
    id (int)
    nom (varchar)
    information (varchar)

    table B :
    valeur (varchar)
    actif (bool)

    Dans ma table A, dans la colonne information, j'ai des listes de valeurs provenant de la table B. Ces valeurs sont séparées par des virgules.
    EX :
    table B :
    valeur | actif
    ___________
    AAA | 1
    BAA | 1
    BBA | 0
    BBB | 1
    BCA | 1

    table A
    id | nom |*information
    ____________________
    1 | nom 1 | AAA,BBB
    2 | nom 2 | BBA,AAA,BAA,BBB
    3 | nom 3 | BBA
    4 | nom 4 | BBB,BAA,AAA,BCA

    Je voudrais vérifier que les valeurs enregistrées dans la table B colonne information soient bien toutes des valeurs qui se trouvent dans la table A et que ces dernières soient toutes actives.
    Actuellement, je boucle sur mes enregistrements de la table A puis en PHP je découpe la chaine "information" et je teste la présence dans la table B.
    Est-il possible de le faire en MySQL afin de tester si cela optimiserait mon traitement.

    Pour informations, mes tables comportent :
    Table A : environ 500 000 enregistrements.
    Table B : environ 7000 enregistrements.
    " L'absence diminue les médiocres passions et augmente les grandes, comme le vent éteint les bougies et allume le feu. "
    La Rochefoucauld

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Le seul moyen d'optimiser votre traitement est de modéliser correctement votre base de données.

    Il vous manque une table, qui contiendrait la clef primaire de la table A et celle de la table B.

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    En cherchant un peu, vous pouvez peut-être monter une "usine à gaz" avec la fonction FIND_IN_SET... Mais je ne pense pas que ça améliore les performances.
    Clairement, le problème vient de votre modèle de données : il vous faut une table de passage entre A et B.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. [AC-2010] Utiliser valeur d'une liste de choix dans une liste déroulante d'un autre formulaire
    Par Sébastien1609 dans le forum Macros Access
    Réponses: 1
    Dernier message: 11/06/2015, 15h31
  2. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  3. [LibreOffice][Base de données] Recuperer une liste de tables et une liste de champs d'une table sur LibreOffice & OpenOffice
    Par gerard.sauvage dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 08/04/2014, 12h35
  4. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  5. Réponses: 0
    Dernier message: 09/11/2010, 15h43

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