Mysql

Php ve mysql de veritabanında arama yaparken karşınıza gelen sonuçları yine arama yaptığınız kelimelere göre sıralamak isterseniz tam yerine geldiniz.

Bu çözümü bulmam bir kaç günümü aldı arkadaşlar ancak denenmiş olup sonuç olumlu ve tam istediğimiz gibi geliyor. Örnek arama kodumuz aşağıda:

SELECT *, ((CASE WHEN SUTUN_baslik LIKE '%aranacak_kelime_1%' THEN 1 ELSE 0 END) + (CASE WHEN SUTUN_baslik LIKE '%aranacak_kelime_2%' THEN 1 ELSE 0 END) + (CASE WHEN SUTUN_baslik LIKE '%kuaza%' THEN 1 ELSE 0 END)) AS kelimelere_gore_sirala
FROM TABLO_ISMI
WHERE SUTUN_baslik LIKE '%aranacak_kelime_1%' OR SUTUN_baslik LIKE '%aranacak_kelime_2%' OR SUTUN_baslik LIKE '%kuaza%'
ORDER BY kelimelere_gore_sirala DESC
LIMIT 0, 20;

Bu kod yapısında case when yapısını select kısmında uyguladık. Daha önceden Where kısmındaki arama sorgusundan sonra kullanıyordum ancak bir türlü sonuç alamıyordum. 2 günlük araştırma ve birazda şansımın yardımıyla isteğime ulaştım. mysql de case yapısının bir çok kullanım alanı mevcut, burda bilgi veremeyeceğim çünkü suan o kadar tercübem olmadı ancak söz konusu aradığımız kelimelere göre listeleme yapmak istediğimizde ihtiyacımız olan kod yapısını paylaşıyorum, umarım yardımcı olur sizede.

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.