Сводный запрос показывает неправильные результаты

#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.