Requete sql avec REGEXP

Discussion dans 'Problèmes de référencement spécifiques à vos sites' créé par achaternet, 4 Juin 2009.

  1. achaternet
    achaternet WRInaute discret
    Inscrit:
    11 Février 2003
    Messages:
    222
    J'aime reçus:
    0
    Bonjour

    Je bute sur une requete sql.

    Je souhaite rechercher dans une table un champ contenant a la fois fenetre ET vpc.

    Là, c'est avec OU ( le symbole | ):

    Code:
    SELECT id FROM table WHERE champ REGEXP 'fenetre | vpc'
    Comment modifier cette requete pour que ca cherche les 2 ?

    Merci
     
  2. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    Peut-être avec :

    ( champ LIKE "%fenetre%vpc%" || champ LIKE "%vpc%fenetre%" )
     
  3. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Pas sur qu'une regexp soit le plus rapide ici. J'aurais plus tendance, sur une requête aussi simple, à faire :
    Code:
    SELECT id FROM table WHERE champ LIKE '%fenetre%' AND champ LIKE '%vpc%'
     
  4. achaternet
    achaternet WRInaute discret
    Inscrit:
    11 Février 2003
    Messages:
    222
    J'aime reçus:
    0
    Merci de ton aide.

    J'avais pensé a cela, mais 2 LIKE, cela n ait pas top :?
     
  5. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    T'as pas trop le choix, car tu fais bien 2 requêtes différentes, selon l'ordre des mots.
     
  6. achaternet
    achaternet WRInaute discret
    Inscrit:
    11 Février 2003
    Messages:
    222
    J'aime reçus:
    0

    C'est pour cela que je m' etais dirigé vers REGEXP espérant pouvoir faire la recherche en 1 seul requête.
     
  7. dmathieu
    dmathieu WRInaute accro
    Inscrit:
    9 Janvier 2004
    Messages:
    5 596
    J'aime reçus:
    0
    Tu ne peut pas, avec une regex, chercher deux expressions dans n'importe quel ordre.
    Si tu connais l'ordre de tes deux mots, tu peut donc le faire avec une regex.

    Sinon il faut faire deux conditions.
    Mais pas deux requêtes. Tu n'en fait qu'une seule, avec deux conditions LIKE dedans.
     
  8. achaternet
    achaternet WRInaute discret
    Inscrit:
    11 Février 2003
    Messages:
    222
    J'aime reçus:
    0
    Comme ca c'est clair.

    Je vais faire une requete avec 2 LIKE.

    Merci a vous :wink:
     
  9. wallou GT
    wallou GT Nouveau WRInaute
    Inscrit:
    1 Février 2009
    Messages:
    1
    J'aime reçus:
    0
    Ce qui est bien avec le '|' (OU) du REGEXP, c'est que ca filtre sur l'ensemble des combinaisons "fenetre" + "vpc" + "fenetre" et "vpc".

    On pourrait l'utiliser dans une sous requête et le coupler aux LIKEs:

    Code:
    SELECT id
    FROM table
    WHERE id
    IN (
    
    SELECT id
    FROM table
    WHERE champ
    REGEXP "fenetre|vpc"
    )
    AND champ LIKE '%fenetre%'
    AND champ LIKE '%vpc%'
    ca permettrait d'optimiser la recherche si le volume est important et surtout si le nombre de mots recherchés augmente.

    Un EXPLAIN sur cette requête te confirmera le déroulement de la procédure:
    1/ requete avec le REGEXP sur toute la table
    2/ requete avec les LIKE sur le résultat du REGEXP.
    A tester... :wink:
     
  10. Aaarrrgggh
    Aaarrrgggh WRInaute occasionnel
    Inscrit:
    16 Mars 2009
    Messages:
    298
    J'aime reçus:
    0
    Tu peux aussi utiliser les index full text, puissant et plus rapide qu'un like
     
Chargement...
Similar Threads - Requete sql REGEXP Forum Date
Réunir 2 requetes sql (ORDER BY ASC et DESC) Développement d'un site Web ou d'une appli mobile 29 Août 2021
encodage texte sur requete mysql Demandes d'avis et de conseils sur vos sites 21 Octobre 2020
Requête MySql imbriquée Développement d'un site Web ou d'une appli mobile 8 Octobre 2020
Prestashop - Comportement bizarre d'une requête SQL e-commerce 1 Décembre 2018
Requête Mysql avec des string Développement d'un site Web ou d'une appli mobile 6 Février 2018
La syntaxe SQL permet-elle plusieurs mots-clefs dans une (sous-)requête identique ? Développement d'un site Web ou d'une appli mobile 17 Août 2017
Requete mysql Développement d'un site Web ou d'une appli mobile 30 Mai 2017
Problème requête mysql Développement d'un site Web ou d'une appli mobile 1 Mars 2017
Reduire et optimiser une requete sql Développement d'un site Web ou d'une appli mobile 8 Décembre 2016
Anomalie : beaucoup trop de requêtes SQL Administration d'un site Web 18 Novembre 2016
Besoin d'aide pour requête SQL PHP Développement d'un site Web ou d'une appli mobile 12 Novembre 2016
[php/mysql] Eviter de faire 20 requêtes pour un affichage Développement d'un site Web ou d'une appli mobile 19 Janvier 2016
requete Mysql et classement des résultats Administration d'un site Web 1 Novembre 2015
Mysql requête imbriquée Développement d'un site Web ou d'une appli mobile 1 Octobre 2015
Requetes SQL parfois lente : Selon show profile -> Pb opening table Développement d'un site Web ou d'une appli mobile 8 Juillet 2015
PDO Comment vérifier le SQL d'une Requête ??? Développement d'un site Web ou d'une appli mobile 4 Février 2015
Demande Requête SQL Développement d'un site Web ou d'une appli mobile 19 Janvier 2015
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
Redirection htaccess ou requête sql ? Netlinking, backlinks, liens et redirections 18 Janvier 2014
requete sql avec critère provenant d'un formulaire Développement d'un site Web ou d'une appli mobile 3 Juillet 2013