Я создаю опрос с тремя вариантами A, B & C
табличные голоса
id_poll id_voter value_A value_B value_C
23 12 0 1 0
23 11 1 0 0
Каждый раз, когда я голосую по определенному письму, я вставляю номер 1 в его столбец и 0 в другие
ПРОБЛЕМА
Я хочу вернуть имя столбца проголосовавшего письма (где 1 существует).
Я думал, что-то вроде этого
SQL
SELECT (¿?) as entry_selected
FROM poll
WHERE (column_value=1?) AND id_voter='11'
Я хочу вернуть value_A
Я бы рекомендовал использовать case
:
select (case when value_a = 1 then 'value_a'
when value_b = 1 then 'value_b'
when value_c = 1 then 'value_c'
end)
from poll
where 1 in (value_a, value_b, value_c);
IF
имхо.
Вам придется жестко указывать имена столбцов (если у кого-то нет лучшего решения), но вы могли бы сделать:
SELECT IF(value_a = 1, 'value_a', IF(value_b, 'value_b', IF(value_c, 'value_c', ''))) as entry_selected
FROM poll
WHERE (value_a = 1 OR value_b = 1 OR value_c = 1) AND id_voter='11'
Лучшим решением было бы изменить структуру ваших данных:
id_poll id_voter value
23 12 B
23 11 A
A, B,C,D,E...