ilk hatan,
AND (value => 29 AND value <= 80) yerine;
AND (value BETWEEN 29 AND 80)
ikincisi bi kere option'ları bu tabloda tutman doğru olmamış ama değiştiremiyosan hepsi virgül içerdiği için başında ve sonunda;
options LIKE '%,3,%' şeklinde çözebilirsin.
Aslında BETWEEN kullanıyorum, "(value => 29 AND value <= 80)" ifadesi bir örnekti. Sorgunun devamı olacağını göstermek için eklemiştim ama dikkatsizce örnek vermişim.
Tablo yapısının yanlış olduğunun farkındayım fakat tabloyu maalesef ben kurgulamadım ve değiştirme şansım da yok. Bahsettiğin gibi (
'%,3,%') kullanabilmem için tüm ayraçlar virgül ile başlayıp virgül ile bitmeli.
Ama PHP tarafında explode ve implode kullandığım için bu koşul her zaman geçerli olmuyor. Daha pratik bir yoluna bakıyorum, bulamazsam son çare olarak bunu değerlendireceğim. Teşekkür ederim
denediniz mi bilmiyorum ama like kısmında "%3%" yerine "%3" şeklinde kullanırsanız tüm değişkenler için için belki işe yarayabilir.
Bir üst yorum da da ifade ettiğim gibi bunu son seçenek olarak değerlendiriyorum. Nedense uzak durmam gereken bir çözüm gibi geliyor. Teşekkür ederim
Verilerin virgül ile ayrılarak veritabanında saklanması doğru bir kullanım değil. JSON olarak saklayabilirsiniz. Değiştirme şansınız olmadığı için CONCAT LIKE anahtar kelimeleri ile bir araştırma yapabilirsiniz. Emin olmamakla birlikte bu yöntemin sizin işinize yarayacağını düşünüyorum.
MYSQL tarafım çok güçlü değil Concat Like konusunu araştıracağım. Teşekkür ederim
SELECT * FROM contents WHERE (options in (2,3)) and (value between 29 and 80)
Bu daha iyi olacaktır
options in (2,3) şeklinde kullanabilmem için options sütunu INT olması gerekmez mi? Şuanda virgüllerden dolayı benim options sütunum VARCHAR. Bu konuda bilgilendirebilir misiniz?