postgresql临时提取记录

时间:2018-08-08 11:07:11

标签: postgresql

我有几十张桌子。如:

users (id BIGSERIAL, user_name TEXT, email TEXT);
orgs (id BIGSERIAL, org_name TEXT);
org_users(id BIGSERIAL, org_id references orgs(id), user_id references users(id));
another_table(id BIGSERIAL, org_user_id references org_users(id));
yet_another_table(...);

其中usersorgs是顶级表,而每个其他表都具有到这两个表中一个或两个的外键依赖性。

现在给定org_iduser_id,我想提取所有依赖于org_iduser_id的记录。

例如,如果数据为:

users
=====
1, One, one@example1.com
2, Two, two@example1.com
3, Three, three@example2.com
4, Four, four@example2.com
5, Five, five@example2.com

orgs
====
1, example1
2, example2

org_users
========
1, 1, 1
2, 1, 2
3, 2, 3
4, 2, 4
5, 2, 5

现在,如果我给get all data for user_id 1,那么我应该得到:

users
=====
1, One, one@example1.com

orgs
====
1, example1

org_users
========
1, 1, 1

类似地,如果我给get all data for org_id 1,我应该得到:

users
=====
1, One, one@example1.com
2, Two, two@example1.com

orgs
====
1, example1

org_users
========
1, 1, 1
2, 1, 2

我正在尝试查找是否有任何标准方法来提取记录,以分析性地/递归地分析外键依赖性。可以安全地假设我在postgresql数据库中拥有所有表名的列表,并且没有跨数据库甚至跨模式的依赖关系。

0 个答案:

没有答案