如何在SQL中加入查询结果?

问题描述

我正在尝试对两个表进行JOIN,但没有得到正确的输出。您能帮我怎么做吗?

示例:

我有一个SQL查询正在生成输出

查询

SELECT * FROM (SELECT schemaname,objectname,usename,HAS_TABLE_PRIVILEGE(usrs.usename,fullobj,'select') AND has_schema_privilege(usrs.usename,schemaname,'usage')  AS sel,'insert') AND has_schema_privilege(usrs.usename,'usage')  AS ins,'update') AND has_schema_privilege(usrs.usename,'usage')  AS upd,'delete') AND has_schema_privilege(usrs.usename,'usage')  AS del,'references') AND has_schema_privilege(usrs.usename,'usage')  AS ref FROM(SELECT schemaname,'t' AS obj_type,tablename AS objectname,schemaname + '.' + tablename AS fullobj FROM pg_tables WHERE schemaname not in ('pg_internal') UNION SELECT schemaname,'v' AS obj_type,viewname AS objectname,schemaname + '.' + viewname AS fullobj FROM pg_views WHERE schemaname not in ('pg_internal')) AS objs,(SELECT * FROM pg_user) AS usrs ORDER BY fullobj) WHERE (sel = true or ins = true or upd = true or del = true or ref = true) and schemaname='medaff' and usename not in ('rdsdb','clustersa','prdrscl01master')

以上查询输出为:

schemaname  objectname   usename           sel  ins  upd  del  ref
medaff      dmn_category medaff_dev_admin  True True True True True
medaff      dmn_category emea_dev_admin    True True True True True
medaff      dmn_category cdeadmin          True True True True True

我还有另一个查询

查询2:

select * from medaff.imedical_Metadata

上述查询输出

application_name  tablename
smart_source      dmn_category

如何结合这两个输出获取以下输出

application_name schemaname  objectname   usename           sel  ins  upd  del  ref  
smart_source     medaff      dmn_category medaff_dev_admin  True True True True True
smart_source     medaff      dmn_category emea_dev_admin    True True True True True
smart_source     medaff      dmn_category cdeadmin          True True True True True

您能帮我做这个吗?预先感谢。

解决方法

select * from 

(SELECT * FROM (SELECT schemaname,objectname,usename,HAS_TABLE_PRIVILEGE(usrs.usename,fullobj,'select') AND has_schema_privilege(usrs.usename,schemaname,'usage')  AS sel,'insert') AND has_schema_privilege(usrs.usename,'usage')  AS ins,'update') AND has_schema_privilege(usrs.usename,'usage')  AS upd,'delete') AND has_schema_privilege(usrs.usename,'usage')  AS del,'references') AND has_schema_privilege(usrs.usename,'usage')  AS ref FROM(SELECT schemaname,'t' AS obj_type,tablename AS objectname,schemaname + '.' + tablename AS fullobj FROM pg_tables WHERE schemaname not in ('pg_internal') UNION SELECT schemaname,'v' AS obj_type,viewname AS objectname,schemaname + '.' + viewname AS fullobj FROM pg_views WHERE schemaname not in ('pg_internal')) AS objs,(SELECT * FROM pg_user) AS usrs ORDER BY fullobj) WHERE (sel = true or ins = true or upd = true or del = true or ref = true) and schemaname='medaff' and usename not in ('rdsdb','clustersa','prdrscl01master')
) b inner join medaff.imedical_metadata x on x.tablename = b.objectname