Вставить набор результатов в запрос вручную
У меня есть одна БД с менеджерами и зависимыми пользователями. И другой БД на другом сервере, с некоторой другой информацией о пользователях.
Я хочу запросить вторую БД и получить данные, сгруппированные менеджерами. Одним из решений для этого является циклический просмотр результата из db2 и вычисление нового результата в приложении, но я хотел бы попытаться создать набор результатов из db1 с данными о пользователях и его менеджерах для запроса, который будет выполнен на db2. Что-то вроде псевдокода ниже:
SELECT
b.manager_id,
SUM(a.column)
FROM user a
JOIN <resultset_with_assoc_between_user_and_manager> b ON a.user_id = b.manager_id
GROUP BY b.manager_id
Возможно ли это, не создавая никаких новых таблиц в db2, просто сделать запрос с данными из db1?
1 ответ
Это решение, которое я сделал. Это работает нормально, но я не знаю, каковы потери производительности по сравнению с созданием таблицы tmp с записями user_id -> manager_id и соединением их с db2_table
, Но, как я уже сказал, db2_table
это huuuuuuuge
SELECT
CASE
WHEN a.user_id IN(user_id11, user_id12,user_id13, ...) THEN manager_id1
WHEN a.user_id IN(user_id21, user_id22,user_id23, ...) THEN manager_id2
WHEN a.user_id IN(user_id31, user_id32,user_id33, ...) THEN manager_id3
...
ELSE a.user_id
END AS manager,
...
FROM db2_table a
GROUP BY manager