У меня есть данные в моей PostgreSQL базе данных в формате ниже
answer_id question_id country_id answer
1 1 1 7
2 1 2 7
3 1 3 5
4 2 1 3
5 2 2 2
6 2 3 2
Я пытаюсь получить все страны, которые имеют определенный ответ для определенной страны, и мы можем иметь несколько комбинация вопрос-ответ. Например, мне могут понадобиться все страны, у которых для вопроса 1 есть 7 для ответа (2 значения), но затем, наряду с первым условием), я также добавляю, что ответ на вопрос 2 равен 2, и теперь он падает с 2 значений (страны под идентификаторы 1 и 2) только к 1 (идентификатор страны 2).
Теперь Мне удалось сделать это с помощью пересечения следующим образом ...
select country_id from answer_table where question_id = 1 and answer = 7
intersect
select country_id from answer_table where question_id = 2 and answer = 2
Проблема заключается в том, что мне нужно иметь возможность делать это динамически, что означает, что один раз я могу выбрать только 1 пару вопросов и ответов, но в других случаях мне может понадобиться больше (3, 5, 7 или что-то еще), что влияет на количество выборок (и, в свою очередь, пересекается).
Я имею в виду, что это выше работает, и у меня есть возможность использовать построитель запросов, так что на самом деле это не так уж и сложно, но я не Я не верю, что это самый эффективный и самый умный способ.
Поэтому мой вопрос в основном заключается в том, существует ли более эффективный или более умный способ динамического выбора / пересечения (например, функция, которая принимает массивы данных или tever?)?
Спасибо и хорошего вам!
ps Я нашел этот поток стека, но там они всегда используют фиксированные 5 запросов.