Перекрестный запрос к базе данных в 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.