Auteur Sujet: Requête Sql  (Lu 695 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Dimitri01

  • Connaisseur
  • ***
  • Messages: 355
Requête Sql
« le: 17 janvier 2004 à 11:46:08 »
Bonjour,

Je permets à l'utilisateur d'entrer plusieurs mots-clés pour effectuer une recherche sur les champs d'une table mysql.

L'utilisateur peut choisir "au moins un des mots" ou "tous les mots".

Dans le premier cas, ma requête est la suivante :

[CODE]SELECT nom FROM assos WHERE nom REGEXP "mot1|mot2|mot3..." OR sigle REGEXP "mot1|mot2|mot3..." OR info REGEXP "mot1|mot2|mot3..." [CODE]

avec mot1, mot2... les mots-clés entrés par l'utilisateur.

Comme vous pouvez le constater, j'effectue la recherche sur plusieurs champs.
J'aurai aimé utiliser la recherche fulltext mais phpnet ne proposant pas de version mysql récente, celle ci ne fonctionne que pour un seul mot clé (against ne peut contenir qu'un mot clé, à moins d'utiliser la recherche booléenne mais pas possible en version 3 de mysql).

Cela dit, la requête ci-dessus fonctionne très bien.

Mais pour le cas où l'utilisateur l'option "tous les mots", je n'arrive pas à écrire ma requête.

Comment faire ?

Merci/

anthomicro

  • Invité
Requête Sql
« Réponse #1 le: 17 janvier 2004 à 13:55:23 »
Salut !

un AND à la place du OR et le tour est joué (enfin à vue de nez sans regarder la requête)

a +

Hors ligne Dimitri01

  • Connaisseur
  • ***
  • Messages: 355
Requête Sql
« Réponse #2 le: 17 janvier 2004 à 14:14:33 »
Non...

Si je place un AND à la place du OR, cela signifie que chaque champ doit contenir l'un des mots placés dans REGEXP.

Moi, je veux les enregistrements (et non les champs) qui contiennent obligatoirement tous les mots saisis.