J'essaie de convertir la requête de jointure interne SQL en requête de jointure interne PostgreSQL. Dans cette requête de jointure interne, quelles tables utilisent que toutes les tables ne sont pas présentes dans une base de données. nous avons séparé les tables en deux bases de données, à savoir la base de données d'application et la base de données de sécurité
J'ai essayé comme ci-dessous mais je reçois l'erreur suivante
Erreur
ERROR: cross-database references are not implemented: "Rockefeller_ApplicationDb.public.userrolemapping"
LINE 4: INNER JOIN "Rockefeller_ApplicationDb".public.userro..
fonction stockée SQL
SELECT Department.nDeptID
FROM Users INNER JOIN Permission
ON Users.nUserID = Permission.nUserID INNER JOIN UserRoleMapping
ON Users.nUserID = UserRoleMapping.nUserID INNER JOIN Department
ON Permission.nDeptInst = Department.nInstID
AND Department.nInstID = 60
WHERE
Users.nUserID = 3;
Fonction enregistrée PostgreSQL
SELECT dep.ndept_id
FROM "Rockefeller_SecurityDb".public.users as u
INNER JOIN "Rockefeller_SecurityDb".public.permissions p ON u.nuser_id = p.nuser_id
INNER JOIN "Rockefeller_ApplicationDb".public.userrolemapping as urm ON u.nuser_id = urm.nuser_id
INNER JOIN "Rockefeller_ApplicationDb".public.department dep ON p.ndept_inst = dep.ninst_id
AND dep.ninst_id = 60
WHERE
u.nuser_id = 3;
Vous ne pouvez pas joindre des tables de différentes bases de données.
Les bases de données sont séparées logiquement dans PostgreSQL par leur conception.
Si vous souhaitez joindre les tables, vous devez les placer dans différents schémas d'une base de données plutôt que dans différentes bases de données.
Notez que ce qu'on appelle "base de données" dans MySQL est appelé "schéma" dans SQL standard.
Si vous avez vraiment besoin de joindre des tables de bases de données différentes, vous devez utiliser un wrapper de données étranger.