Autor Zpráva
Petr Ká
Profil
Ahoj,

řeším MySQL dotaz, který má vypsat všechny aktuální projekty (alias A) a k nim celkový počet podúloh (zvlášť celkem (alias B) a zvlášť již hotové (alias C)):

SELECT a.*,
            IFNULL(COUNT(b.task_id),0) AS tasks_sum,
            IFNULL(COUNT(c.task_id),0) AS tasks_finished,
            ( UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(a.created) ) / ( UNIX_TIMESTAMP(a.deadline) - UNIX_TIMESTAMP(a.created) ) * 100 AS percentage
          FROM `projects` a
          LEFT JOIN projects_tasks b
            ON b.project_id=a.project_id
          LEFT JOIN projects_tasks c
            ON (c.project_id=a.project_id AND c.status='finished')
          WHERE a.status<>'finished'
          GROUP BY a.project_id
          ORDER BY a.deadline ASC

Nad testovacímy daty mi to ale vrací, že počet podúloh je 2 a hotových také, přitom jako hotová podúloha je označena (status='finished') pouze jedna.

Neví někdo prosím čím by to mělo být? Už si s tím lámu hlavu pár dní...

Děkuji

EDIT: ve WHERE a.status<>'finished' potřebuji, má se jednat o výpis neukončených projektů
Petr Ká
Profil
EDIT2 : Vyřešeno přídání DISTINCT do COUNT...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: