LINUX.ORG.RU

История изменений

Исправление 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