MySQl Dikey Ilk ayrılmış değerler satırları bulun?

2 Cevap php

Let say i have a field 'category' with the value '1|2|3'. I want to search in mysql such that it will return all rows matching my search parameter into the values of the category. for example:

$cat_id = 1;

SELECT * FROM `myTable` WHERE cat_id is equal or found in category with values '1|2|3'...

böyle bir şey .. ben doğru sql sorguda koymak nasıl bilmiyorum.

Herhangi bir düşünce? şimdiden teşekkürler.

2 Cevap

Peki could MySQL özgü regex operatörünü kullanarak yönetebilirsiniz:

WHERE category RLIKE '(\\||^)'+cat_id+'(\\||$)'

(Varsayılan olarak hangi, MySQL standart olmayan eğik çizgi kaçar etkindir varsayarsak.)

Ancak, sorgunun bu tür indekslenebilir değildir ve genellikle böyle bir sütuna birden datapoints geçiştirmek için son derece kötü bir şema tasarım olarak kabul edilir. Her zamanki çözeltisi myTable için bir birleştirme tablosu category.

Bu bir table "kategori" değil, alan olmalıdır.

SELECT * from mytable, cattable, where cattable.id=1 and cattable.mid=mytable.id