У меня есть интересная головоломка, которую, я считаю, можно решить исключительно на SQL.У меня есть таблицы, похожие на следующие:
responses:
user_id | question_id | body
----------------------------
1 | 1 | Yes
2 | 1 | Yes
1 | 2 | Yes
2 | 2 | No
1 | 3 | No
2 | 3 | No
questions:
id | body
-------------------------
1 | Do you like apples?
2 | Do you like oranges?
3 | Do you like carrots?
, и я хотел бы получить следующий вывод
user_id | Do you like apples? | Do you like oranges? | Do you like carrots?
---------------------------------------------------------------------------
1 | Yes | Yes | No
2 | Yes | No | No
Я не знаю, сколько будет вопросов, и они будутбыть динамичным, поэтому я не могу просто написать код для каждого вопроса.Я использую PostgreSQL и считаю, что это называется транспонированием, но я не могу найти ничего, что говорит о стандартном способе сделать это в SQL.Я помню, как делал это в своем классе баз данных еще в колледже, но это было в MySQL, и я, честно говоря, не помню, как мы это делали.
Я предполагаю, что это будет комбинация объединений и GROUP BY
утверждение, но я даже не могу понять, с чего начать.
Кто-нибудь знает, как это сделать?Большое спасибо!
Редактировать 1: Я нашел некоторую информацию об использовании кросс-таблицы , которая, кажется, то, что я хочу, но у меня возникают проблемы с пониманиемЭто.Ссылки на лучшие статьи будут с благодарностью!