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 :

[SQL_LIKE] Requête LIKE avec plusieurs colonnes d'une table


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Points : 26
    Points
    26
    Par défaut [SQL_LIKE] Requête LIKE avec plusieurs colonnes d'une table
    Bonjour,

    Je débute en SQL et j'aimerai exécuter une requête qui cherche un mot dans plusieurs colonnes d'une table.

    Voici ce que j'ai écris comme requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM articles WHERE title OR resume OR content LIKE "%$motclé%"
    Mais comme vous vous doutez cette requête ne renvoie pas toutes les lignes où se trouve le "$motclé". Alors que moi je veux que la requête me renvoie toutes les lignes qui contiennent au moins une fois le "$motclé" dans l'une des très 3 colonnes.

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Bonjour,
    Dans la clause WHERE attend une expression logique.
    Donc A OR B OR c=1 est vira si A est VRAI ou B est VRAI ou C = 1.
    Ce n'est pas propre à SQL, c'est juste de la logique booléenne.
    Je pense que tu devrais voir comment modifier ta requête pour avoir le résultat attendu.

    D'ailleurs je suis étonné que ton SGBD laisse passer cette requête, vu que title n'est pas une expression booléenne…

    Tatayo?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    Merci du retour du coup j'ai essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM `articles` WHERE (`title` LIKE "%$motclé%" ) OR (`resume` LIKE "%$motclé%") OR (`content` LIKE "%$motclé%")
    Cela semble fonctionné mais il y aurait une solution plus simple pour arriver au même résultat ?

  4. #4
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    Janvier 2013
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 372
    Points : 1 202
    Points
    1 202
    Par défaut
    La factorisation la plus poussée que j'ai trouvée utilise le row-value constructor aka constructeur de lignes valuées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from articles where (title, resume, content) = ('motclé','motclé','motclé')
    et hic ça n'accepte pas l'opérateur like, pas or uniquement and, au moins avec postgres.
    ... donc on dirait que non.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Points : 26
    Points
    26
    Par défaut
    OK, merci pour votre aide.
    Je peux classer ce post en statut "résolu"

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 188
    Points : 12 744
    Points
    12 744
    Par défaut
    Je vois bien une solution, mais moche:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM articles WHERE title | resume | content LIKE '%$motclé%'

    Tatayo.

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

Discussions similaires

  1. [AC-2010] Liste déroulante avec plusieurs colonnes mais une seule affichée
    Par scorpking dans le forum IHM
    Réponses: 2
    Dernier message: 23/01/2014, 14h07
  2. primary key sur plusieurs colonnes d'une table
    Par hotttttsauce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/04/2008, 13h20
  3. Réponses: 9
    Dernier message: 08/01/2008, 14h58
  4. Réponses: 5
    Dernier message: 27/12/2006, 17h56
  5. Recherche dans plusieurs colonnes d'une table
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 26/07/2006, 12h58

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