问题描述
我正在尝试对两个表进行JOIN,但没有得到正确的输出。您能帮我怎么做吗?
示例:
查询:
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