У меня есть довольно сложный запрос в моей базе данных PostgreSQL, охватывающий 4 таблицы через серию вложенных подзапросов. Однако, несмотря на немного хитрый внешний вид и настройку, в конечном итоге он вернет два столбца (из одной и той же таблицы, если это поможет в ситуации )на основе сопоставления двух внешних параметров (две строки должны совпадать с поля в разных таблицах ). Я новичок в проектировании баз данных в PostgreSQL, поэтому я знаю, что эта, казалось бы, волшебная вещь, называемая представлениями, существует, и кажется, что она могла бы мне здесь помочь, но, возможно, нет.
Есть ли способ переместить мой сложный запрос в представление и каким-то образом просто передать ему два значения, которые мне нужны для сопоставления? Это значительно упростило бы мой внешний -код (за счет переноса сложностей на структуру базы данных ). Я могу создать представление, обертывающее мой статический пример запроса, и оно отлично работает, однако работает только для одной пары строковых значений. Мне нужно иметь возможность использовать его с различными значениями.
Таким образом, мой вопрос: :можно ли передать параметры в статическое представление и сделать его «динамическим»? Или, возможно, представление не является правильным подходом к нему. Если есть что-то еще, что будет работать лучше, я весь внимание!
*Изменить:*Как просили в комментариях, вот мой запрос в его нынешнем виде:
SELECT param_label, param_graphics_label
FROM parameters
WHERE param_id IN
(SELECT param_id
FROM parameter_links
WHERE region_id =
(SELECT region_id
FROM regions
WHERE region_label = '%PARAMETER 1%' AND model_id =
(SELECT model_id FROM models WHERE model_label = '%PARAMETER 2%')
)
) AND active = 'TRUE'
ORDER BY param_graphics_label;
Параметры выделяются символами процента выше.