#mysql #sql
#mysql #sql
Вопрос:
У меня есть 2 таблицы, таблица survey_product и таблица survey_result
survey_product выглядит следующим образом:
id product
1 abc
2 asd
3 xyz
survey_result выглядит следующим образом:
id user_id product_id answer
1 2 1 1
2 2 2 0
3 2 3 1
4 3 1 1
5 3 2 0
6 3 3 1
Мне нужно, чтобы результат был:
id user abc asd xyz .......
1 2 1 0 1
2 3 1 0 1
Ответ №1:
В MySQL нет простого способа сделать это. Вы должны поместить оператор case и преобразовать их в столбцы для всех доступных пользователей.
select s.id,
case when s.user = 1 then answer else 0 end as 'abc',
...
...
from survey_result s
join user u on s.user = u.id
group by s.id
Однако вы можете просто экспортировать результирующий набор в формате csv и выполнить необходимый поворот в программном обеспечении для работы с электронными таблицами, таком как Excel.