SELECT TASK.*, TMS.FSTATE as MESSAGESTATE
FROM TTASKMESSAGE TMS, TTASK TASK
where TASK.FGUID = TMS.FTASKGUID(+)
and (((TASK.FSTATE = 'tsStarted') or (TASK.FSTATE = 'tsProcessing') or
(TASK.FSTATE = 'tsWaiting')) and
TASK.FGUID in
(Select FTASKGUID
from TTASKMESSAGE TMS
where ((TMS.FRORGURL =
'ROOT652300000000.OGN652300050000.DPTXTGLY.PTM652300030129.PSM') or
(TMS.FRORGURL =
'ROOT652300000000.OGN652300050000.DPTXTGLY.PTM') or
(TMS.FRORGURL = 'POSITIONXTGLY.PTN') or
(TMS.FRORGURL = 'ROOT652300000000.OGN652300050000.DPT') or
(TMS.FRORGURL = 'ROOT652300000000.OGN'))
and ((TMS.FSTATE = 'tmsSend') or (TMS.FSTATE = 'tmsReceived') or
(TMS.FSTATE = 'tmsProcessing'))))
见图
SELECT TASK.*, TMS.FSTATE as MESSAGESTATE
FROM TTASKMESSAGE TMS, TTASK TASK
where TASK.FGUID = TMS.FTASKGUID
and (((TASK.FSTATE = 'tsStarted') or (TASK.FSTATE = 'tsProcessing') or
(TASK.FSTATE = 'tsWaiting')) and
TMS.FGUID in
(Select FGUID
from TTASKMESSAGE TMS
where ((TMS.FRORGURL =
'\ROOT\652300000000.OGN\652300050000.DPT\XTGLY.PTM\652300030129.PSM') or
(TMS.FRORGURL =
'\ROOT\652300000000.OGN\652300050000.DPT\XTGLY.PTM') or
(TMS.FRORGURL = '\POSITION\XTGLY.PTN') or
(TMS.FRORGURL = '\ROOT\652300000000.OGN\652300050000.DPT') or
(TMS.FRORGURL = '\ROOT\652300000000.OGN'))
and ((TMS.FSTATE = 'tmsSend') or (TMS.FSTATE = 'tmsReceived') or
(TMS.FSTATE = 'tmsProcessing'))))
不应该是TASK.FGUID IN 应该是TMS.FGUID 后面的SELECT 的字段应该是 TTASKMESSAGE.FGUID,这样才能限制选择本人的任务呀。