2012-06-04 3 views
0

Просьба помочь мне, почему условие COUNT в инструкции WHERE совершает ошибку и как я могу ее исправить ?.MySQL COUNT on WHERE Заявление

  SELECT jq.taskqueueid,jq.jobid 
      FROM (SELECT p.taskID `curentTaskID`, 
        p.taskName `currentTaskName`, 
        p.processingType `currentProcessingType`, 
        p1.taskID `prevTaskID`, 
        p1.taskName `prevTaskName`, 
        p1.processingType `prevProcessingType` 
        FROM projecttask p 
        LEFT JOIN projecttask p1 
        ON p.sequenceNo=p1.nextTaskSequence 
        AND p.projectID=p1.projectID 
       WHERE p.taskID=18) task 
      INNER JOIN taskslogs tl 
       ON tl.taskID=task.`prevTaskID` 
      AND tl.statusDefinitionID=1 
      INNER JOIN jobqueue jq 
       ON tl.taskqueueid=jq.taskqueueid 
      WHERE COUNT(jq.taskqueueid)=COUNT(tl.taskqueueid) 
+0

Какая ошибка вы получаете? –

+0

Вот эта ошибка: Запрос: SELECT jq.taskqueueid, jq.jobid FROM (SELECT p.taskID 'curentTaskID', p.taskName' currentTaskName', ... Код ошибки: 1111 Недопустимое использование групповой функции – Bryan

+0

Вы можете 't делать COUNT(), не группируя ваши результаты. – hannebaumsaway

ответ

2

использовать aggregate function как COUNT(), вы должны сделать группировку данных, если вы хотите использовать его в качестве условия вы не можете использовать WHERE для этого, так как WHERE условия считаются до агрегирования. Вместо этого используйте GROUP BY с HAVING. (см. также http://dev.mysql.com/doc/refman/5.0/en/select.html)

+0

спасибо, он работает .. – Bryan

Смежные вопросы