我有一个元素表和一个指定这些元素之间层次结构的表。 知道一个元素的别名,我想获取其子元素的别名。 指定"元素 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)