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 :

Champ de recherche multi mots


Sujet :

PHP & Base de données

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1
    Par défaut Champ de recherche multi mots
    Bonjour à tous,

    Je viens vers vous car je suis dans un projet et j'ai un problème de SQL. Je vous remercie d'avance de vos réponses.

    Je dispose d'une table qui me contient les informations d'une vidéo (id, nom, description). Nous disposons d'une seconde table disposant des tags des vidéos (3 champs : id, video_info, content_tags).

    Je souhaite faire marcher un champ de recherche permettant de rechercher les tags dans la seconde table (content_tags), en rapport avec les tags de la vidéo en cours de vision.

    Exemple : Je cherche dauphin, le moteur de recherche doit me sortir les vidéos ayant le tag dauphin, mais il est possible que les vidéos aient un autre tag. Il doit être également possible de chercher 2 tags a la fois (dauphin, enfant par exemple).
    Nous devons passer par 2 tables car les vidéos peuvent avoir plusieurs tags.

    La recherche d'un mot simple marche sans soucis.
    Ma requete ne m'affiche pour l'instant aucun résultat, alors qu'elle devrait m'en afficher 2 :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT videos_info.* FROM videos_tags, videos_info 
    	WHERE 
    	(
    		videos_tags.content_tags LIKE '%dauphin%' 
    		AND
                    videos_tags.content_tags LIKE '%enfant%'
    	)
    	AND videos_info.id = videos_tags.id_videos 
    	GROUP BY videos_info.id HAVING count(videos_info.id) > 0

    Le AND central changé en "OR", j'ai tous les résultats pour dauphin et enfant, qu'il y ait les deux tags ou un seul. Il me faudrais uniquement les vidéos avec les deux tags.

    Voila ! Merci pour ceux qui prendront le temps de m'aider a résoudre mon probleme !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 815
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT videos_info.* 
    FROM videos_tags, 
    INNER JOIN videos_info ON videos_info.id = videos_tags.id_videos 
    WHERE videos_tags.content_tags LIKE '%dauphin%' 
       OR videos_tags.content_tags LIKE '%enfant%'
    GROUP BY videos_info.id 
    HAVING count(videos_info.id) = 2
    Comme tu le vois, je préfère séparer la jointure de la restriction. C'est plus propre.
    Le OR devrait te donner toutes les lignes contenant l'un ou l'autre ou les deux LIKE.
    Le GROUP BY va regrouper les id identiques et le HAVING ne va garder que les id qui ont les deux LIKE.
    Enfin je crois que ça devrait fonctionner comme ça.
    Bref, à mon avis, tu n'étais pas loin de la solution.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 134
    Par défaut
    Désolé, mais je comprends pas ton problème....

Discussions similaires

  1. recherche multi mot clé
    Par thomix68 dans le forum Débuter
    Réponses: 1
    Dernier message: 05/03/2011, 22h40
  2. Recherche multi mot, expression,etc
    Par romuald07 dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/01/2007, 07h11
  3. Recherche Multi-Critères 9 champs, 6 tables
    Par Moyaku dans le forum Access
    Réponses: 17
    Dernier message: 24/08/2006, 09h50
  4. Recherche multi-critères et champs vides
    Par Soulghard dans le forum Access
    Réponses: 4
    Dernier message: 15/02/2006, 14h40
  5. Recherche multi-mots sur une seule colonne
    Par Badiste dans le forum Langage SQL
    Réponses: 2
    Dernier message: 31/03/2004, 11h24

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