История изменений
Исправление slovazap, (текущая версия) :
Подскажите, есть ли более лучший способ? Postgresql декларируется как фичастый и объектный. Должен же быть способ получше? Как вернуть из базы ответ в более структурированном виде? Может есть способ при селекте как-то скомбинировать поля и вернуть одним полем. Или еще как-то?
Што? Именуй поля через AS
и используй GROUP BY
и агрегирующие функции. Можешь дополнительно использовать подзапросы - они разворачивается в те же самые джойны, но в некоторых случаях избавляют от лишней писанины и выглядят более читабельно:
SELECT
name,
foo,
bar,
(SELECT array_agg(value) FROM properties WHERE properties.name = items.name) AS properties
FROM items
VIEW
использовать не советую, потому что он не даст потом менять схему нижележащих таблиц, придётся на каждое изменение схемы его пересоздавать. Запросы должны создаваться на клиенте, а не храниться на сервере в виде view.
Исходная версия slovazap, :
Подскажите, есть ли более лучший способ? Postgresql декларируется как фичастый и объектный. Должен же быть способ получше? Как вернуть из базы ответ в более структурированном виде? Может есть способ при селекте как-то скомбинировать поля и вернуть одним полем. Или еще как-то?
Што? Именуй поля через AS
и используй GROUP BY
и агрегирующие функции. Можешь дополнительно использовать подзапросы - они разворачивается в те же самые джойны, но в некоторых случаях избавляет от лишней писанины и выглядит более читабельно:
SELECT
name,
foo,
bar,
(SELECT array_agg(value) FROM properies WHERE properties.name = items.name) AS properties
FROM items