Передать параметры «ГДЕ» в представление PostgreSQL?

У меня есть довольно сложный запрос в моей базе данных 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;

Параметры выделяются символами процента выше.

41
задан Erwin Brandstetter 9 July 2012 в 20:31
поделиться