【发布时间】:2019-12-18 17:24:35
【问题描述】:
我有以下要求,我想使用同一个表连接多次从表中获取多个值。但我无法得到想要的结果。
下面是我尝试过的查询,它给出了重复的记录,还有很多时间在整个集合上运行。我尝试使用 distinct 但它的时间很多所以我不得不中止查询..
SELECT
HGHost.name AS HOST,
HGDB.name AS DATABASE,
HGDB.dbms AS DBMS,
HGDB.server AS INSTANCE,
HGSCH.name AS SCHEMA,
HGTBL.name AS "TABLE",
HGCLM.name AS "COLUMN",
HGVAL.value AS "HCDE",
HGVAL1.value AS "NOPI",
HGVAL2.value AS "Inf_CLAS"
FROM
XVIEW.XCATTR IGCCA INNER JOIN XVIEW.XCATTRSTRVAL HGVAL
on IGCCA.RID=HGVAL.ofcustomattributeRID AND IGCCA.NAME = 'SURE_CLASS'
INNER JOIN XVIEW.XCATTRSTRVAL HGVAL1
ON IGCCA.RID =HGVAL1.ofcustomattributeRID AND IGCCA.NAME = 'NO_CLASS'
INNER JOIN XVIEW.XCATTRSTRVAL HGVAL2
ON IGCCA.RID =HGVAL2.ofcustomattributeRID AND IGCCA.NAME= 'Info_class'
INNER JOIN XVIEW.DBCLM HGCLM
ON HGVAL.OBJECTRID = HGCLM.RID
OR HGVAL1.OBJECTRID = HGCLM.RID
OR HGVAL2.OBJECTRID = HGCLM.RID
INNER JOIN XVIEW.PDRDATABASETABLE HGTBL
ON HGCLM.ofdatabasetablerid = HGTBL.rid
INNER JOIN XVIEW.PDRDATABASESCHEMA HGSCH
ON HGTBL.ofdataschemarid = HGSCH.rid
INNER JOIN XVIEW.PDRDATABASE HGDB
ON HGSCH.ofdatabaserid = HGDB.rid
INNER JOIN XVIEW.PDRHOSTSYSTEM HGHost
ON HGDB.hostedbyrid = HGHost.rid
WHERE HGHost.name = 'PROD'
AND HGDB.name <> 'teradata'
基本上,我希望根据 XCATTR 表中的连接条件,从此 XCATTRSTRVAL 中获取 HCDE、NOPI 和 Inf_clas 的值。 让我知道它是否清楚。 示例输出:(必须填写最后 3 个字段)
【问题讨论】:
-
添加具有预期输出的示例数据。
-
当前查询有什么问题?它没有给出结果或为同一记录给出多个记录?编辑问题并添加提到的详细信息。
-
是的,它给出了重复的记录。此外,当我在整个场景中运行时,它会花费很多时间。我认为它在进行交叉连接。
-
两次加入同一个表
INNER JOIN XVIEW.XCATTRSTRVAL HGVAL1 ON IGCCA.RID =HGVAL1.ofcustomattributeRID AND IGCCA.NAME = 'NO_CLASS' INNER JOIN XVIEW.XCATTRSTRVAL HGVAL2 ON IGCCA.RID =HGVAL2.ofcustomattributeRID AND IGCCA.NAME= 'Info_class'会导致记录重复。您想在这里实现什么目标? -
我正在尝试根据与 XCATTR(名称列)的不同连接条件从表 XCATTRSTRVAL 中获取 NOPI、HCDE 和 INF_CLAS 的值