【发布时间】:2020-12-02 06:01:53
【问题描述】:
我需要帮助来连接两个表以获得输出。我告诉你场景。你能帮帮我吗?
例子:
我有一个 sql 查询: 查询:
SELECT *
FROM (
SELECT schemaname ,objectname,usename,
HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'select') AND has_schema_privilege(usrs.usename, schemaname, 'usage') AS sel,
HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'insert') AND has_schema_privilege(usrs.usename, schemaname, 'usage') AS ins,
HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'update') AND has_schema_privilege(usrs.usename, schemaname, 'usage') AS upd,
HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'delete') AND has_schema_privilege(usrs.usename, schemaname, 'usage') AS del,
HAS_TABLE_PRIVILEGE(usrs.usename, fullobj, 'references') AND has_schema_privilege(usrs.usename, schemaname, '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')
and objectname in RES;
上面的查询给出了一些输出:
Table 1
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
我有其他表有一些记录:
Table 2:
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
【问题讨论】:
-
您需要第二个表中的字段与第一个表中的字段匹配。第一个表是否包含应用程序名称或表名称?表 1 中的 ObjectName 是否与表 2 中的表名相同?
-
您确定这是 Amazon Redshift 吗?我在问,因为我认为他们使用的是标准串联运算符
||,而您在这里使用的是+:schemaname + '.' + tablename AS fullobj,我只从 SQL Server 知道。 -
是的,它正在亚马逊红移中运行
标签: sql join amazon-redshift