Запросить две таблицы как одну из разных пространств имен - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть две таблицы в базе данных PostgreSQL, которая содержит две таблицы, отличающиеся только пространством имен: Japan.Revenue и Korea.Revenue.Я хочу запросить их, поскольку существует только одна таблица.

Например,

  SELECT productgroup, sum(transactionvalue)
  FROM  ???? (Something that combines the two tables) 
  Group by productgroup where ....

Как мне это сделать?

Мне нужны результаты по Корее и Японии вместе взятые.Пока я отправил 2 запроса и объединил результат в приложении.Должен быть лучший способ

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

попробуйте это:

 SELECT productgroup, sum(transactionvalue)
  FROM  korea  
  Group by productgroup
union all
SELECT productgroup, sum(transactionvalue)
  FROM  japon  
  Group by productgroup

, если у вас есть один и тот же столбец с одним и тем же типом, лучший способ объединить - это объединение, и вы можете группировать по нему за пределами выбора.

0 голосов
/ 23 сентября 2018

Вам необходимо полностью квалифицировать имена таблиц и объединить результаты.Можно сделать больше, чем просто выбрать для внутренних запросов, но, поскольку вы делаете агрегацию, вам нужно сделать это снаружи.https://www.postgresql.org/docs/current/static/queries-union.html

SELECT productgroup, sum(transactionvalue)
FROM (
    SELECT * FROM Japan.Revenue
    UNION ALL
    SELECT * FROM Kora.Revenue
) sub
GROUP BY productgroup
WHERE ....
;

Редактировать: теперь используется UNION ALL из комментариев ниже.

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