将 IN 子句与子查询一起使用.比较的列名称不同



我有一个元素表和一个指定这些元素之间层次结构的表。 知道一个元素的别名,我想获取其子元素的别名。 指定"元素 ID"参数的列在两个表中具有不同的名称。

元素表具有以下(相关)列:

TYPE_EQUIP_CODE(设备类型)

ELEMENT_CODE(元素的标识符)

ELEMENT_ALIAS(元素的别名)

层次结构表具有以下(相关)列:

FATHER_ELEMENT_ID(父元素的标识符)

FATHER_ELEMENT_TYPE(父元素的设备类型)

CHILD_ELEMENT_ID(子元素的标识符)

ELEMENT_CODE和CHILD_ELEMENT_ID是我要比较的列

我想要的是:

知道父亲别名及其类型,获取其子级的别名。

这是我尝试嵌套子查询的方法:

SELECT ELEMENT_ALIAS
FROM TUN_ELEMENT
WHERE ELEMENT_CODE IN (
SELECT * 
FROM J_ELEMENT_HIERARCHY 
WHERE FATHER_ELEMENT_ID = (
SELECT ELEMENT_CODE 
FROM TUN_ELEMENT
WHERE ELEMENT_ALIAS = 'C-09-27-SAE-CR-002' AND TYPE_EQUIP_CODE = 4
) 
AND FATHER_ELEMENT_TYPE = 4)

子查询单独工作,但运行它,我得到这个错误:

Solo se puede especificar una expresión en la lista de selección cuando la subconsulta no se especifica con EXISTS..错误 116。SQLSTATE 42000。严重性为 16。消息状态 1.第 11 行。

翻译的意思是:

如果未使用 EXISTS 指定子查询,则只能在选择列表中指定一个表达式

我试图得到的是子元素的别名:

ELEMENT_ALIAS

C-09-27-SAE-CR-002-D-11

C-09-27-SAE-CR-002-D-12

C-09-27-SAE-CR-002-D-13

这可以通过子查询完成,还是只能通过 JOIN 完成?

必须在子查询中仅指定要返回的 1 列。
您可以在此处找到更多信息。
您想与ELEMENT_CODE进行比较ELEMENT_ALIAS还是FATHER_ELEMENT_ID

SELECT ELEMENT_ALIAS
FROM TUN_ELEMENT
WHERE ELEMENT_CODE IN (
SELECT <Column name here> 
FROM J_ELEMENT_HIERARCHY 
WHERE FATHER_ELEMENT_ID = (
SELECT ELEMENT_CODE 
FROM TUN_ELEMENT
WHERE ELEMENT_ALIAS = 'C-09-27-SAE-CR-002' AND TYPE_EQUIP_CODE = 4
) 
AND FATHER_ELEMENT_TYPE = 4)

相关内容

  • 没有找到相关文章

最新更新