【发布时间】:2013-01-09 02:25:32
【问题描述】:
SELECT
hi_proins0.PROC_INST_ID_ processId,
act_re_procdef.NAME_ processName,
(
#Unknown column 'hi_proins0.PROC_INST_ID_' in 'where clause'
SELECT IFNULL(ct,0) FROM (
SELECT COUNT(*) FROM act_hi_taskinst hi_task1
INNER JOIN act_hi_procinst hi_proins1
ON hi_task1.PROC_INST_ID_ = hi_proins1.PROC_INST_ID_
WHERE hi_proins1.PROC_INST_ID_ = hi_proins0.PROC_INST_ID_
AND hi_task1.ASSIGNEE_ != hi_proins1.START_USER_ID_
AND hi_task1.ASSIGNEE_ = hi_task0.ASSIGNEE_
GROUP BY hi_task1.ASSIGNEE_
) ti
) approvalNodeCount,
(
...
) spendTime FROM
act_hi_taskinst hi_task0
LEFT JOIN act_hi_procinst hi_proins0 ON hi_proins0.PROC_INST_ID_ = hi_task0.PROC_INST_ID_
INNER JOIN act_re_procdef ON act_re_procdef.ID_ = hi_proins0.PROC_DEF_ID_
GROUP BY hi_proins0.PROC_INST_ID_
它会在“where 子句”中抛出未知列“hi_proins0.PROC_INST_ID_” 上
SELECT IFNULL(ct,0) FROM (
...
) ti
ifnull 在上面不起作用
如何解决? :D
【问题讨论】:
-
您需要将 where 子句移到查询的底部。
-
您只在子查询中连接表
act_hi_taskinst(hi_task1) 和act_hi_procinst(hi_poins1),但没有名称为hi_proins0的表或别名。也许您需要另一个与表的连接(但您似乎已经有 act_hi_procinst)或在子查询中将WHERE hi_proins1.PROC_INST_ID_ = hi_proins0.PROC_INST_ID_ AND hi_task1.ASSIGNEE_ != hi_proins1.START_USER_ID_更改为WHERE hi_task1.ASSIGNEE_ != hi_proins1.START_USER_ID_ -
修复此错误后,您将遇到另一个类似的错误。因为在
AND hi_task1.ASSIGNEE_ = hi_task0.ASSIGNEE_子句中您使用了hi_task0引用,但它也不存在。
标签: mysql select subquery ifnull