2013-01-09 49 views
0
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_ 

它扔在未知列'hi_proins0.PROC_INST_ID_ 'where子句' 上MySQL的「未知列」子查詢

SELECT IFNULL(ct,0) FROM (
    ... 
) ti 

和IFNULL不高於

上工作

如何解決? :d

+0

您需要的where子句移動到您的查詢的底部。 – Nix

+0

您只能在子查詢中連接表'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_和hi_task1.ASSIGNEE_!= hi_proins1.START_USER_ID_'到WHERE hi_task1。 ASSIGNEE_!= hi_proins1.START_USER_ID_' – JScoobyCed

+0

修復此問題後,您將遇到另一個類似錯誤。因爲在'AND hi_task1.ASSIGNEE_ = hi_task0.ASSIGNEE_''子句中,您使用'hi_task0'引用,但它也不存在。 – JScoobyCed

回答

0

試試這個:

SELECT hi_proins0.PROC_INST_ID_ processId, act_re_procdef.NAME_ processName, 
     IFNULL((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_ 
      ), 0) 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_ 
+1

它的工作,你能解釋它嗎? –

+0

@ Bodhi'maN您在嵌套子查詢中使用了列(hi_proins0.PROC_INST_ID_),並且MySQL在SELECT部分​​中不支持嵌套子查詢它只允許子查詢。 –

+0

@ Bodhi'maN歡迎來到堆棧溢出 –