gvosnet Posté(e) le 23 février 2006 Partager Posté(e) le 23 février 2006 Hello, J'ai un petit soucis de requête SQL dans la fonction de recherche de mon site en PHP. Les faits : - Je ne suis pas un méga-pro de SQL - J'ai une table "articles" avec comme champs "code_article", "titre_article", "description". - J'ai fait une fonction de recherche qui fonctionne (enfin pas exactement comme je voudrais, mais elle fonctionne). Pour résumer je fais un truc dans le style là : SELECT article WHERE code_article LIKE '%ma_recherche%' OR titre_article LIKE '%ma_recherche%' OR description LIKE '%ma_recherche%' Mon problème : - Les résultats arrivent un peu dans n'importe quel ordre. Ce que je voudrais que la requête fasse : - Avoir une requête plus "pertinante" : afficher d'abord les articles dont le code article contient le mot recherché, puis les articles dont le titre contient le mot recherché et enfin les articles dont la description contient le mot recherché. Ce que j'ai essayer de faire (mais c'est pas vraiment top…) : - Faire 3 requêtes (une sur le code_article, une sur le titre_article, une sur la description) avec l'affichage des résultats les uns à la suite des autres. Problème : j'ai des doublons car un mot contenu dans le titre peut aussi apparaître dans la description et du coup je retrouve l'article 2 fois dans mon résultat de recherche… Voilà, j'espère avoir été à peu près clair dans l'explication du problème... Vous avez des indices ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 23 février 2006 Partager Posté(e) le 23 février 2006 Et pourquoi pas avec un ORDER BY, je comprends pas .... SELECT article WHERE code_article LIKE '%ma_recherche%' OR titre_article LIKE '%ma_recherche%' OR description LIKE '%ma_recherche%' ORDER BY article, titre_article, description Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 23 février 2006 Partager Posté(e) le 23 février 2006 Mets des UNION au lieu des OR. Ca fera comme 3 requêtes distinctes collées bout à bout, chacune triée et ordonnée comme tu veux. select article from table_articles where code_article LIKE '%ma_recherche%' order by article asc UNION select article from table_articles where titre_article LIKE '%ma_recherche%' order by article asc UNION etc... Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 23 février 2006 Auteur Partager Posté(e) le 23 février 2006 Mets des UNION au lieu des OR. Ca fera comme 3 requêtes distinctes collées bout à bout, chacune triée et ordonnée comme tu veux. select article from table_articles where code_article LIKE '%ma_recherche%' order by article asc UNION select article from table_articles where titre_article LIKE '%ma_recherche%' order by article asc UNION etc... NICKEL C'est cette notion de UNION qui me manque en SQL. Mais bon, je débute encore... Merci beaucoup Sentinel, tu m'enléves une sacrée chandelle du pied, je te dois une fière aiguille Lien vers le commentaire Partager sur d’autres sites More sharing options...
NiTrOuS Posté(e) le 24 février 2006 Partager Posté(e) le 24 février 2006 J'ai essayé moi aussi :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
gvosnet Posté(e) le 24 février 2006 Auteur Partager Posté(e) le 24 février 2006 J'ai essayé moi aussi :( C'est vrai, mais je pense que tu n'avais pas bien compris le but de la requête Merci quand même, c'est déjà sympa d'avoir pris le temps de lire mon problème Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.