Можно ли объединить два простых запроса к БД, чтобы получить один ответ, содержащий хэш - PullRequest
0 голосов
/ 19 ноября 2018

в моем блогоподобном приложении у меня есть два отдельных запроса;

Select id, title, content from posts where id ='$a_post_id'

и

Select tagname, tagscore from tags where postid ='$a_post_id'

Так как моя база данных размещена на сервере, отличном от моего приложения, моя главная проблема с производительностью связана с запросами к серверу на оба запроса. Мне было интересно, смогу ли я объединить два запроса в один запрос, чтобы получить ожидаемый результат

postdetails для '$ ​​a_post_id' = id, заголовок, содержимое, теги (хэш tagname, tagscore)

Что-то похожее на соединение, но где строки асимметричны. Или присоединиться к возвращаемым хэшам ...

Кроме того, это звучит как отличное решение для простой проблемы, но я что-то здесь упускаю? Предполагая, что это решение возможно, есть ли у него какие-либо недостатки?

1 Ответ

0 голосов
/ 19 ноября 2018

Если пара ключ / значение JSON в порядке, вы можете сделать что-то вроде этого:

select p.id, p.title, p.content, 
       jsonb_object_agg(t.tagname, t.tagscore) as tags
from posts p
  left join tags t on t.postid = p.id
where p.id ='$a_post_id'
group by p.id;

Выше предполагается, что posts.id определен как первичный ключ

Пример в сети:https://rextester.com/RDQX27041

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...