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

Langage SQL Discussion :

recherche sur une table


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut recherche sur une table
    Bonjour

    Je doit creer une requete mysql qui effectue une recherche sur deux champs ( titre et texte) d'une table.

    Si on tape par exemple la phrase "test1 test2" , la requéte doit retourner tous les résultats qui ont dans le titre et le texte les mots test1 + test2.C'est comme si le titre et le texte est un un seul champ.

    Besoin d'aide svp

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    D'instinct je dirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from table where titre like '%texte1%' and titre like '%texte2%' and texte like '%texte1%' and texte like '%texte2%';

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Bonjour

    Merci pour votre réponse, mais je crois que j'ai besoin de m'expliquer plus

    EXEMPLE AVEC DEUX MOTS CLES "test1" et "test2" :

    cas 1 : le premier mot est dans le titre et le deusiéme dans le texte
    cas 2 : l'inverse du cas 1
    cas 3 : le titre contient les deux mots clés.
    cas 4 : l'invese du cas 3.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     SELECT * FROM table 
    WHERE (titre like '%test1%' AND texte like '%test2%' ) 
    OR  (titre like '%test2%' AND texte like '%test1%' ) 
    OR ( titre like '%test1% %test2%' ) 
    OR ( texte like '%test1% %test2%' )
    svp, j'ai besoin d'aide pour améliorer , corriger ou méme de savoir si il y as une meilleur facon de coder la syntaxe de cette requéte

    Aussi j'aurais besoin de coder une boucle pour creer automatiquement la requéte pour n'importe qu'il nombre de mots clés entré par l'utilisateur

    Bone journée

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    En fait, pour que ta requête soit complête il faut aussi traiter le cas où test2 est avant test1 dans le même champ...

    Il y a l'opérateur CONCAT en sql mais je ne sais pas si tu peux l'utiliser dans un where...

    A priori ton problème est surtout au niveau de la requête, alors autant le poser aux gens concernés
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    comme ceci tout simplement?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * FROM TABLE 
    WHERE (titre LIKE '%test1%' AND texte LIKE '%test2%' ) 
    OR  (titre LIKE '%test2%' AND texte LIKE '%test1%' ) 
    OR ( titre LIKE '%test1%' AND titre LIKE '%test2%' ) 
    OR ( texte LIKE '%test1%' AND text LIKE '%test2%' )

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 098
    Points : 28 406
    Points
    28 406
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM TABLE 
    WHERE (titre || texte LIKE '%test2%' ) 
    AND (titre || texte LIKE '%test1%' )
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Citation Envoyé par Celira Voir le message
    En fait, pour que ta requête soit complête il faut aussi traiter le cas où test2 est avant test1 dans le même champ...

    Il y a l'opérateur CONCAT en sql mais je ne sais pas si tu peux l'utiliser dans un where...

    A priori ton problème est surtout au niveau de la requête, alors autant le poser aux gens concernés
    Oui, CONCAT passe dans le WHERE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT *
    FROM TATABLE
    WHERE CONCAT(titre, texte) like '%test1%'
      AND CONCAT(titre, texte) like '%test2%'
    Par contre, je ne pense pas que ce soit mieux que ce que propose Cybher...

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

Discussions similaires

  1. Recherche sur une table avec une clé alphanum sur 5 caractères
    Par Pypiou dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/09/2013, 09h34
  2. [AC-2003] comment faire pour rechercher sur une table ?
    Par Kalem dans le forum VBA Access
    Réponses: 8
    Dernier message: 10/04/2012, 09h33
  3. Recherche sur une table ne fonctionne pas
    Par runcafre91 dans le forum Langage
    Réponses: 2
    Dernier message: 07/03/2010, 10h32
  4. Recherche sur une table
    Par deutschy dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/06/2007, 10h32
  5. Recherche globale sur une table
    Par webrider dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2006, 11h41

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