Jump to content

[Résolu] [SQL] Ordonner une recherche


gvosnet

Recommended Posts

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 :transpi:

- 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 ?

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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 :transpi:

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 :transpi:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...