Выборка enum

dEn

Guest
Выборка enum

Ситуация такая:

Есть таблица (поля - id int..........enum1 enum('y','n'), enum2 enum('y','n')......enumN enum('y','n'))

Нужно получить (желательно одним запросом) из таблицы строку, в которой сумма полей типа enum со значением 'y' равна числу X
 

Апельсин

Оранжевое создание
> в которой сумма полей типа enum со значением 'y' равна числу X

эээ что-то я не совсем поняла, что ты хочешь :)

тебе надо получить строки, в которых из N существующих полей enum, любые Х равны 'y'?
или что?
 

mahoune

Guest
Как я понял, он хочет получить те строки в которых количество полей ENUMn со значением "Y" равно X

Вот эти строки подойдут под условие x=2

enum1 enum2 enum3 enum4
N Y Y N (x=2)
Y Y N N (x=2)

А эти нет
Y Y Y N (x=3)
N N N N (x=0)
Y N N N (x=1)
 

chira

Новичок
ну если очень нужно:

select *
from tbl
where
(IF(enum1='y',1,0)
+IF(enum2='y',1,0)
+IF(enum3='y',1,0)
+...
+IF(enumn='y',1,0)) = X
 
Сверху