возвращать имя столбца, когда имеет значение sql mysql

0

Я создаю опрос с тремя вариантами 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

  • 3
    Примечание: я бы порекомендовал вам не хранить такие данные. Когда вам нужно добавить новую опцию в ваш опрос, вы должны провести рефакторинг таблицы.
  • 0
    Так что вместо этого ... один столбец с различными параметрами, верно? A, B,C,D,E...
Показать ещё 3 комментария
Теги:

2 ответа

2
Лучший ответ

Я бы рекомендовал использовать 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);
  • 0
    Это немного легче читать, чем вложенное, IF имхо.
  • 0
    да ... элегантно
1

Вам придется жестко указывать имена столбцов (если у кого-то нет лучшего решения), но вы могли бы сделать:

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
  • 0
    Я иду на второй вариант (реструктуризация таблицы), определенно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню