mysql: Alakaya Emret hazırlanmış deyimleri kullanarak?

0 Cevap php

Benim e-alışveriş için bir site arama özelliği oluşturma ve benim sorgu sipariş için aşağıdaki kodu kullanıyorum:

ORDER BY((case when name RLIKE $wholeword then 3 else 0 end) + (case when name RLIKE $partialword then 1 else 0)) DESC

Bu veritabanından komple ve parsiyel maçları hem seçer ve kısmi maçlarda tam karşılaşmalar öncelik vererek onları emreder. Ancak, bana aşağıdaki sorgu sahip sonuçlanır hazırlanmış deyimleri kullanarak çevirdim:

ORDER BY((case when name RLIKE ? then 3 else 0 end) + (case when name RLIKE ? then 1 else 0)) DESC

Tabii ki, bu sorguda '$ WholeWord' ve '$ partialword' hem de değiştirilir '?' alaka hesaplanırken ve böylece aynı görünüyor. Tam karşılaşmalar artık kısmi maçlarda öncelik verilir anlamına gelir. Ben sipariş verirken iki sorguları ayırmak için bir yol gerekir.

Not: sorgu hala çalışır ama artık sıralarken $ WholeWord ve $ partialword için farklı ağırlık sağlar.

Herkes herhangi bir fikir var mı? herhangi bir yardım büyük mutluluk duyacağız!

Nico

edit: emphasized ORDER BY part of the query (removed the rest)

0 Cevap