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

PHP & Base de données Discussion :

MySQL trouver un ID dans un champ sous la forme ID1;ID2;ID3 [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    xou
    xou est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Par défaut MySQL trouver un ID dans un champ sous la forme ID1;ID2;ID3
    Pas trouvé de titre adéquat...

    Bonjour,

    j'ai un table qui possède un champ contenant une liste d'identifiants sous la forme 1;56;12;180 et mon problème est d'exécuter une requete sql qui me sorte tous les enregistrements contenant un identifiant en particulier.

    J'ai pensé à REGEXP mais mon problème se situe dans les identifiants contenant les mêmes séries de chiffres exemple:
    enregistrement 1: 11;23;34;56
    enregistrement 2: 1;12;330;560
    enregistrement 3: 111;123;5600

    Comment ne sortir que les enregistrement contenant l'identifiant 1 ou l'identifiant 56 ?

    J'espère avoir été clair.
    N'étant pas un spécialiste des expressions régulières je suis un peu perdu et je ne cherche pas forcément avec la bonne méthode.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Dommage, le séparateur aurait été une virgule, vous auriez pu recourir à la fonction FIND_IN_SET.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ REGEXP '(^|;)11(;|$)'

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Exercice de style avec un LIKE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $search = '123' ;
    $sql = " ... WHERE CONCAT(';', field_id, ';') LIKE '%;$search;%'" ;

  4. #4
    xou
    xou est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Par défaut
    Effectivement avec le like modulo si j'avais des points virgule de chaque coté des id, mais ce n'est pas le cas.

    Citation Envoyé par julp Voir le message
    Dommage, le séparateur aurait été une virgule, vous auriez pu recourir à la fonction FIND_IN_SET.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE champ REGEXP '(^|;)11(;|$)'
    c'est envisageable de modifier tous les enregistrements et l'application du moment que ça me permet d'exécuter des requêtes rapides par la suite.
    Et ça m'a l'air d'être exactement la solution idéale car à lire ta regex ça pourrais bien aller mais le FIND_IN_SET risque d'être plus rapide.


    Merci pour vos réponses.

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 325
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 325
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par xou Voir le message
    Effectivement avec le like modulo si j'avais des points virgule de chaque coté des id, mais ce n'est pas le cas.
    Si si, avec le CONCAT( ) ;-)

  6. #6
    xou
    xou est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 3
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Si si, avec le CONCAT( ) ;-)
    Ahh oui j'avais pas fait gaffe !! Encore un truc que j'aurais appris au passage.

    Merci Julp car le FIND_IN_SET est super rapide. Juste ce qu'il me fallait.

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

Discussions similaires

  1. trouver une virgule dans un champ texte
    Par marcuswillbe dans le forum Formules
    Réponses: 1
    Dernier message: 18/01/2009, 17h08
  2. trouver un mot dans un champs type rs(info)
    Par delavega dans le forum ASP
    Réponses: 4
    Dernier message: 14/11/2008, 15h54
  3. Réponses: 2
    Dernier message: 20/03/2008, 10h19
  4. Comment trouver une chaine dans un champ xml ?
    Par nico-pyright(c) dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/08/2007, 10h44
  5. [php/mysql]Controle de requete dans un champ de saisie
    Par rdams dans le forum Requêtes
    Réponses: 6
    Dernier message: 28/03/2006, 10h57

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