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 :

Requête multiple dans un seul champ ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Requête multiple dans un seul champ ?
    j ai un catalogue de chanson avec un champs "file" qui correspond a la dénomination d'un titre par exemple : "ref.105 chanteur titre.mp4" avec sql si je cherche chanteur titre (avec LIKE) je trouve le résultat souhaité, si je cherche titre chanteur je ne trouve rien ... y a t il un moyen de faire en sorte que ma recherche se fasse dans tous les sens ?

    aujourd’hui depuis php pour interroger ma mabse j utilise ceci mais ça ne fonctionne que dans un sens ...

    Merci de votre aide,
    phil.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if ($search != null) {
            $sql = 'SELECT * FROM `catalog` WHERE (`file`LIKE "%' . $search . '%")';
            $sqlCount = 'SELECT count(*) FROM `catalog` WHERE (`file`LIKE "%' . $search . '%")';
        }

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Selon le SGBD que vous utilisez (quel est il ?), vous pouvez combiner 2 fonctions CONTAINS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select col1, col2, ..., coln
    from  ma_table
    where contains(file, 'Emile Zola') = 1
      and contains(file, 'germinal') = 1
    Ou tout simplement LOCATE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select col1, col2, ..., coln
    from  ma_table
    where locate('Emile Zola', file) > 0
      and locate('germinal', file) > 0

  3. #3
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    j utilise mysql php sur mac (mamp) mais ce que je voulais ajouter c est que la variable $search defnie par l utilisateur de la page web sur laquelle setrouve la demande de requete reste un champ unique il ne peut donc pas y avoir a la fois emile zola d un coté et germinal de l autre mais au contraire une saisie de l utilisateur qui va tantot ecrire actuellement germinal emile zola et la ca fonctionnera parce que le fichier ref.21544 germinal emile zola existe ... mais si il retre zola germinal il ne trouvera rien ... c est la mon probleme ..

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonsoir,

    Je vois deux possiblités :
    1) Artillerie lourde : Recherche FULLTEXT
    Tu peux mettre en place une recherche FULLTEXT (j'ai rapidement regardé, a priori MySQL le supporte). Par contre, je ne serais pas capable de t'aider pour l'écriture de la requête, je ne connais pas assez MySQL pour cela.

    2) Génération d'une requête SQL
    Sinon, autre possibilité, tu génères une requête plus complète. Dans ton script PHP, il faut que tu :
    • sépare ta chaine de caractère selon les espaces (via la fonction explode par exemple);
    • pour chaque morceau, tu créés la condition correspondante
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      `file`LIKE "%' . $search . '%"
    • tu concatènes toutes les conditions avec un opérateur AND (tu veux une recherche qui contienne chaque terme) ;
    • tu mets le tout dans la clause WHERE de ta requête.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par nicephil06 Voir le message
    j utilise mysql php sur mac (mamp) mais ce que je voulais ajouter c est que la variable $search defnie par l utilisateur de la page web sur laquelle setrouve la demande de requete reste un champ unique il ne peut donc pas y avoir a la fois emile zola d un coté et germinal de l autre mais au contraire une saisie de l utilisateur qui va tantot ecrire actuellement germinal emile zola et la ca fonctionnera parce que le fichier ref.21544 germinal emile zola existe ... mais si il retre zola germinal il ne trouvera rien ... c est la mon probleme ..
    Avec les méthode que je vous ai proposées ça fonctionnera, il suffit que vous découpiez préalablement la chaine de caractères saisie en mots (à faire dans la partie application avant d'exécuter la requête), et vous recherchez chacun de ces mots en utilisant par exemple la fonction LOCATE

  6. #6
    Candidat au Club
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $str = $name;
      $expl=explode(" ",$name);
     
      print_r (explode(" ",$expl));
    voila ce qui ma ssauvé merci pour votre aide j ai bien compris comment exploser une saisie dans le champ de recherche et donc d obtenir ainsi des variables pour chaque element de la recherche ... ca fonctionne maintenant ...

    MERCI !

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

Discussions similaires

  1. Requête ajout dans un seul champ
    Par pasb71 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/11/2013, 22h57
  2. [2008] Plusieurs résultats de requête dans un seul champ
    Par Bakkach dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 22/04/2013, 10h00
  3. Réponses: 3
    Dernier message: 03/07/2010, 17h31
  4. sélection multiple de valeurs dans un seul champ
    Par antoine0207 dans le forum Access
    Réponses: 4
    Dernier message: 04/07/2006, 17h01
  5. enregistrer deux variable différente dans un seul champs
    Par developpeur_mehdi dans le forum Bases de données
    Réponses: 7
    Dernier message: 07/03/2004, 23h18

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