我有一个元素表和一个指定这些元素之间层次结构的表。知道一个元素的别名后,我想获取其子元素的别名。指定“元素 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.. Error 116. SQLSTATE 42000. Severity 16. MsgState 1. Line 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 完成?