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 :

Requete avec un seul mot recherché dans tous les champs


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Points : 74
    Points
    74
    Par défaut Requete avec un seul mot recherché dans tous les champs
    Bonjour,

    J'ai une petite question...
    J'explique d'abord vite fait le contexte :

    Dans mon site en php, je suis en train de rajouter un petit moteur de recherche interne, étant donné que je ne sais aps du tout comment ça marche, je me suis dit que ça pourrait être pas mal si les mots recherchés par le client, sont recherchés dans TOUS LES CHAMPS de la base produits où ce mot est présent.
    Par exemple, je vend des PC, le client cherche dans la barre de recherche "JEUX", et du coup j'aimerais lancer une requete, qui me cherchera dans ma table "produits" tous les produits où au moins 1 champs possèdant le mot "jeux"

    Dans ma table produits j'ai les champs "carte mere" , "nom de la machine" , "descriptif" , "reference"....

    si dans le champs "descriptif" ou "carte mere" ou "nom de la machine" a le mot "jeux" on met le "nom de la machine" en résultat sur la apge de rechercher (mais ça ce n'est pas un probleme, mon probleme à moi est : comment faire cette requete ? aidez moi svp) En esperant que ma demande est assez explicite.

    Merci d'avance.

    Ju'

    PS, je precice que je suis sur une plateforme ODBC, mais bon je sais pas si ça change qq chose, mes requete sont de type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //connexion à ma base
    $sql = "SELECT descriptif from produits WHERE codeproduit = '".$CodeProduit."' ";
    $res=odbc_exec($connect, $sql);
    $descriptif=odbc_result($res,"DESCRIPTIF");
    // Deconnexion de ma base

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    Tu peux utiliser l'opérateur LIKE, le symbole % signifie "n'importe quelle chaine de caractère" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT NomMachine from produits WHERE Descriptif like '%".$MotRecherche."%' OR CarteMere like '%".$MotRecherche."%' OR NomMachine like '%".$MotRecherche."%' ";

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Je me demande à quoi ressemble votre modèle de données pour avoir ce genre de champs.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Points : 74
    Points
    74
    Par défaut
    Merci spinah pour la réponse, c'est exactement ce que je veux.
    Maintenant je veux chercher ce mot dans TOUS LES CHAMPS, comment ecrire cette requete STP ?

    Merci.



    PS:
    Et, Waldar, ce que j'ai cité au dessus n'est qu'un exemple pour permettre à ces qui me lisent de m'aider avec un petite exemple concret, cela va de soit que j'ai un champ pour chaque type de composants, et je gère le multi-tables

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 387
    Points
    18 387
    Par défaut
    Citation Envoyé par ju0123456789 Voir le message
    cela va de soit que j'ai un champ pour chaque type de composants
    C'est précisément ce qui me parait mal modélisé.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Data Engineer
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Data Engineer

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Dis nous en un peu plus sur ton mcd
    Bonjour,

    Peux-tu nous en dire un peu plus sur cette table avec le type de données, car il est évident qu'il ne faut pas aller chercher cette information dans une colonne de type NUMBER par exemple.

    Cdt,
    Tahar LATRECHE

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Points : 74
    Points
    74
    Par défaut
    Bonjour
    A oui je n'y ai pas pensé !!
    Mais ça tombe bien, car dans cette table, je n'ai que du nchar et nvarchar

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Citation Envoyé par ju0123456789 Voir le message
    Maintenant je veux chercher ce mot dans TOUS LES CHAMPS, comment ecrire cette requete STP ?
    Pour que la recherche porte sur toutes les colonnes, il va falloir toutes les ajouter dans votre clause WHERE.
    Sinon, il doit y avoir un moyen de récupérer la description de la table dans les tables systeme, et de créer la clause WHERE dynamiquement à partir de la liste de colonnes de la table, mais ça me semble un peu tordu, je doute que vous ayez réellement besoin de ça.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 253
    Points : 74
    Points
    74
    Par défaut
    nan bah ok merci du tuyau, comme j'en ai besoin plusieurs fois, je vais toute les ecrire dans une variable et ops c'est parti ! merci merci merci
    bonne journée

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

Discussions similaires

  1. [AC-2013] Recherche dans tous les champs d'une table
    Par AnneLiseA dans le forum Access
    Réponses: 6
    Dernier message: 06/07/2015, 10h54
  2. Recherche dans tous les champs
    Par Ayack dans le forum IHM
    Réponses: 6
    Dernier message: 07/06/2008, 23h51
  3. Réponses: 2
    Dernier message: 07/03/2006, 15h27
  4. Réponses: 4
    Dernier message: 01/03/2006, 13h58
  5. [MySQL] Rechercher dans tous les champs
    Par Faure dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/10/2005, 14h52

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