У меня есть интересная загадка, которая, я считаю, может быть решена в чисто 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: Я нашел некоторую информацию об использовании кросс-таблицы, которая, кажется, есть то, что я хочу, но я У меня проблемы с пониманием этого. Ссылки на лучшие статьи были бы с благодарностью!