是否有可能加入我分手的字符串的一部分? 我试了一下:
SELECT param.par_name,
PARPAT.pp_pattern,
KOM.kom_name
FROM inv.inv_parpat PARPAT
INNER JOIN inv.inv_param PARAM
ON PARPAT.pp_par_id = PARAM.par_id
INNER JOIN inv.inv_komponente KOM
ON KOM.kom_id = (SELECT Substr(PARPAT.pp_pattern,
Instr(PARPAT.pp_pattern, ':') + 1
)
FROM inv.inv_parpat)
WHERE PARPAT.pp_pattern LIKE '%ATA%';
该声明说: 单行子查询返回多行
答案 0 :(得分:2)
为什么使用子查询?你已经有了这张桌子,为什么不用呢? :
SELECT param.PAR_NAME,
PARPAT.PP_PATTERN,
KOM.KOM_NAME
FROM INV.INV_PARPAT PARPAT
INNER JOIN INV.INV_PARAM PARAM
ON PARPAT.PP_PAR_ID = PARAM.PAR_ID
INNER JOIN INV.INV_KOMPONENTE KOM
on KOM.KOM_ID = SUBSTR(PARPAT.PP_PATTERN,INSTR(PARPAT.PP_PATTERN, ':')+1)
WHERE PARPAT.PP_PATTERN LIKE '%ATA%';
答案 1 :(得分:0)
您需要根据子字符串列将其加入PARPAT。如果使用子查询加入,则子查询应仅返回一个值(如max()或min()函数将执行的操作)。否则,您可以将IN子句与子查询一起使用。但请记住,使用IN时需要考虑性能因素。对于您的情况,请尝试以下查询:
SELECT param.PAR_NAME,
PARPAT.PP_PATTERN,
KOM.KOM_NAME
FROM INV.INV_PARPAT PARPAT
INNER JOIN INV.INV_PARAM PARAM ON PARPAT.PP_PAR_ID = PARAM.PAR_ID
INNER JOIN INV.INV_KOMPONENTE KOM on KOM.KOM_ID = (SUBSTR(PARPAT.PP_PATTERN,INSTR(PARPAT.PP_PATTERN, ':')+1))
WHERE PARPAT.PP_PATTERN LIKE '%ATA%';