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

MySQL Discussion :

Recherche d'un texte sur plusieurs ID avec jointure [MySQL-5.0]


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 9
    Points
    9
    Par défaut Recherche d'un texte sur plusieurs ID avec jointure
    Bonjour,

    Je dispose d'une table photos et d'une table poly avec un lien entre les deux sur id_ref2 et b_reference.

    J'ai fait un formulaire de recherche dans lequel je propose à l'utilisateur de saisir du texte, ou un ID avec la possibilité de rechercher plusieurs valeurs en séparant avec un ;

    Exemple :
    Texte = "Magie;Poudre"
    Id = "29"

    SELECT * FROM photos,poly WHERE photos.id_ref2=poly.b_reference AND poly.b_utilisation like '%magie%' AND poly.b_utilisation like '%poudre%' AND (photos.id_ref2 = '29' ) limit 50
    La requête est correcte et fonctionne.


    Exemple2 :
    Texte = "Magie;Poudre"
    Id = "29;30;35;45;79;50"
    Ce qui revient en langage humain a : Cherche les résultats pour les photos 29 ou 30 ou 35 ou 45 avec le texte Magie et Poudre.

    SELECT * FROM photos,poly WHERE photos.id_ref2=poly.b_reference AND poly.b_utilisation like '%magie%' AND poly.b_utilisation like '%poudre%' AND (photos.id_ref2 = '641' OR photos.id_ref2 = '644' OR photos.id_ref2 = '645' ) limit 50

    Cependant la requête ne retourne pas de résultat, je pense que j'ai une incohérence et qu'il n'est pas possible de faire ce genre de recherche, mais j'aimerai avoir votre confirmation.

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut kishkool77.

    Dans ta première requête, tu testes la valeur de la colonne 'id' :
    de cette façon-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (photos.id_ref2 = '29' )
    Je ne voie aucun problème sachant que tu as seulement une seule valeur à tester.

    Inversement, dans ta seconde requête, tu désires tester une liste de valeur de la colonne 'id' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id = "29;30;35;45;79;50"
    d'une autre façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (photos.id_ref2 = '641' OR photos.id_ref2 = '644' OR photos.id_ref2 = '645' )
    Peut importe ce que tu obtiens, ce n'est pas ainsi qui faut procéder.

    D'abord, ta liste de valeur doit être séparer par des virgules, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Id = "29,30,35,45,79,50"
    et d'autre part, pour tester ta colonne 'id', tu dois utiliser le 'in', comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (photos.id_ref2 in '29,30,35,45,79,50' )
    Ainsi tu pourras mettre une ou plusieurs valeurs pour ta colonne id, sans changer la structure de ta requête.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonjour

    Juste pour info
    l'écriture des jointures fonctionne certes, mais ne correspond plus au standard du SQL.
    Il faut utiliser "JOIN ... ON"; "LEFT JOIN ... ON", "RIGHT JOIN ... ON".

    Pierre

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

Discussions similaires

  1. [XL-2002] Recherche d'une valeur sur plusieurs feuilles avec conditions
    Par Rat-Thon dans le forum Excel
    Réponses: 4
    Dernier message: 06/12/2013, 12h26
  2. Textes sur plusieurs lignes avec POEdit
    Par Bioteck dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/06/2013, 00h06
  3. Réponses: 4
    Dernier message: 07/07/2011, 08h51
  4. Réponses: 13
    Dernier message: 16/08/2006, 09h06
  5. Query sur plusieurs colonnes avec count(distinct...)
    Par Jeankiki dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/08/2004, 15h22

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