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 :

Requete : ignorer un mot


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut Requete : ignorer un mot
    Bonjour !

    Je dois faire un moteur de recherche.
    et par exemple je veux saisir mot1 -mot2
    IL faut donc que je fasse une requete qui me donne les résultats contenant le mot1 mais pas le mot2 parce que j'ai mis un - devant.
    pouvez vous m'aidez s'il vous plait ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    voici le code que j'ai fait pour le moment mais ça marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $Requetefinale =" SELECT * FROM site WHERE $condition Valide='1' INTERSECT ( SELECT * FROM site WHERE '%route%'	NOT IN ( SELECT Description FROM site))";

    Je veux sélectionner tous les sites qui respecte la condition ( elle elle marche je l'ai testé dans une autre requete).
    je veux aussi sélectionner tous les sites dont la description ne comporte pas le mot route.
    et je veux donc faire une intersection des deux sélections afin d'obtenir les sites qui ont la condition mais pas le mot route.

  3. #3
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Bonjour,

    Jette un oeil du côté de la fonction INSTR().

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    heu merci. Mais je vois pas le rapport avec ce que je veux faire.
    je veux pas retourner la position de l'occurence d'un mot. je veux juste que ma requete SQL me récupère les champs contenant certains mots si d'autres mots ne sont pas contenus dedans.
    si je veux moto et pas auto. il faut que la requete me renvoie tout les champs où il y a moto dans la description à condition qu'il n'y ai pas le mot auto.


    EDIT : ma requete ne comprends pas INTERSECT.
    je viens de tester directement dans la base de données et le mot INTERSECT n'est pas en vert comme les autres mots réservés.
    J'ai la version MySQL 4.1.10

    EDIT 2 :
    SELECT *
    FROM 'matable'
    WHERE '%route%' NOT
    IN (

    SELECT 'Description'
    FROM 'matable'
    )

    Cette requete non plus ne marche pas

  5. #5
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par Poutchou
    EDIT 2 :
    SELECT *
    FROM 'matable'
    WHERE '%route%' NOT
    IN (

    SELECT 'Description'
    FROM 'matable'
    )

    Cette requete non plus ne marche pas
    Oui, je crois qu'il vaut mieux l'oublier celle-là
    Ecrire des requêtes à l'intuition n'est souvent pas une bonne solution...

    Quant à la fonction INSTR(), elle retourne 0 si la sous-chaine recherchée n'existe pas dans la chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM matable
    WHERE INSTR(macolonne, 'chaine_presente')<>0 AND INSTR(macolonne, 'chaine_absente')=0
    (ce n'est qu'une solution parmi d'autres...)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    il me met une erreur à INSTR
    j'ai fait un copier coller de ce que tu m'avais écrit en remplaçant par les termes de ma base. et qd j'exécute, PhpMyadmin me met INSTR en rouge. et j'ai une erreur de syntaxe.

  7. #7
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Je viens de tester, ça fonctionne en 5.0.18 et c'est censé marcher depuis les premières versions de MySQL...
    Quelle est ta requête exactement ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    j'ai testé celle là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     SELECT *
    FROM 'site'
    WHERE INSTR( 'Description', '%route%' ) >0
    AND INSTR( 'Description', '%auto%' ) =0
    LIMIT 0 , 30
    J'ai essayé en enlevant les ' , les % en en rajoutant d'autrre. mais nada ...

  9. #9
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Les simples quotes (') ne sont pas des caractères délimiteurs d'identifiants de colonnes ou de tables mais des délimiteurs de chaines de caractères.

    Donc
    'site' => site
    'Description'=>Description

    Et les % ne servent à rien...

    D'autre part ça serait bien d'avoir les messages d'erreur que te retourne MySQL

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    Bah c'est bon ça marche
    Merci de ton aide.
    tout ça juste pour des simples '.

  11. #11
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    De rien.

    En fait c'est un peu comme si tu faisais ça en PHP par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'if' ($i==3) {
      'echo' "trois";
    }
    Ca ne risque pas de fonctionner...

    Et merci de penser au bouton !

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    simple question :
    Le INSTR est-il sensible à la casse ? parce que j'ai besoin d'une méthode qui ne le soit pas.

  13. #13
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    C'est marqué dans le manuel MySQL (on va pas tout faire à ta place non plus )

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

Discussions similaires

  1. [FTS] ignorer les "mots noirs" ou "stop words"
    Par MClover dans le forum SQLite
    Réponses: 0
    Dernier message: 15/03/2012, 17h30
  2. Ignorer un mot avec StringTokenizer (ou autre ?)
    Par Bash01 dans le forum Général Java
    Réponses: 2
    Dernier message: 17/05/2010, 15h51
  3. [MySQL] ignorer certains mots dans la recherche en fulltexte
    Par Abou Zar dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/03/2010, 09h26
  4. [AC-2003] comment protéger une table ou une requete par un mot de passe
    Par NANOUSUN dans le forum Sécurité
    Réponses: 1
    Dernier message: 29/01/2010, 10h04
  5. Requete Matching de mots
    Par slyer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/02/2007, 20h04

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