MariaDBMYSQLPhp

Mysql “like %kuaza%” ile aranan kelimelere göre sıralama yapmak “case when, order by, like”

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.

Yoluyla
mysql order by relevance

Selçuk Kılıç

Hayat çok kısa, bu yüzden sığdırabileceğiniz kadar hayal kurup onlara göre yaşamasını iyi bilmek lazım. Fazla hayallere kapılıp gerçekleşmediğinde kafayı sıyırabilir, başka taraflara savrulabilirsiniz.. İmkanınız varken, yanınızda size değer verenlere onlarında hayatınızın bir parçası olduğunu hatırlatın..

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

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

Başa dön tuşu