Перекрестный запрос к базе данных в PostgreSQL

Я пытаюсь построить запрос в Postgres. Я имею опыт работы с SQL Server, поэтому у меня возникли некоторые синтаксические проблемы. Мой запрос должен поразить две отдельные базы данных на двух отдельных серверах. Мне нужно сделать соединение между наборами данных. По сути, у меня есть таблица с активностью входа пользователя в db1. Запись добавляется каждый раз, когда пользователь заходит на сайт. На db2 у меня есть таблица с покупками. Для каждого дня мне нужно видеть: сколько людей вошли в систему и сколько пользователей, которые вошли в систему, сделали покупку.

Мои таблицы выглядят так:

Logins                Purchases
---------             ---------
ID                    User_ID
User_ID               Amount
LoginDate 

Это было бы легко, если бы в моей таблице покупок было поле даты. Но это не так. Итак, в настоящее время я пробую следующее:

SELECT 
  // Somehow get the number of logins for the given day here
  // Somehow I need to get the number of purchases for the given day here      
  TO_CHAR(TO_TIMESTAMP((LoginDate/1000) - 14400), 'MM/DD/YYYY') AS the_day
FROM 
  db1.Logins AS t1,
  db2.Purchases as t2
GROUP BY the_day
ORDER BY the_day;

Как узнать количество входов и покупок за каждый день в Postgres? Спасибо!

1 ответ

Решение

Запросы между базами данных не поддерживаются PostgreSQL. Большинство людей, которым нужны запросы "между базами данных", вместо этого используют одну базу данных с несколькими схемами внутри нее. Я не уверен насчет MS-SQL, но "база данных" MySQL больше похожа на "схему" PostgreSQL.

Если вам требуются запросы между базами данных, вы должны использовать DBLink или postgres-fdw. Или вы можете скопировать данные - загляните в Londiste, Slony-I или простой cronjob.

Другие вопросы по тегам