Jag har problem med ett sql-kommando:
SELECT us_id, us_checked, us_approved,
SUM(IF(mo_checked = 0, 1, 0)) AS mo_pending,
SUM(IF(mo_checked = 1 && mo_approved = 0, 1, 0)) AS mo_refused,
SUM(IF(mo_checked = 1 && mo_approved = 1, 1, 0)) AS mo_totalApproved,
SUM(IF(pi_checked = 0, 1, 0)) AS pi_pending,
SUM(IF(pi_checked = 1 && pi_approved = 0, 1, 0)) AS pi_refused,
SUM(IF(pi_checked = 1 && pi_approved = 1, 1, 0)) AS pi_totalApproved
FROM tbl_users
LEFT JOIN tbl_moments ON (us_id = mo_userId)
LEFT JOIN tbl_pictures ON (us_id = pi_userId)
WHERE us_id = " . $intUserId . "
GROUP BY us_id";
If-satserna kollar ett visst villkor och returnerar 1 för sant och 0 för falskt för varje post i tabellerna tbl_moments och tbl_pictures. Resultatet summeras i ett eget fält i det resulterande recordsettet. Problemet är att SUM-funktionerna inte räknar riktigt som jag vill. Värdena från första tabellen räknas rätt och mo_pending, mo_refused och mo_totalApproved får helt rätt värden. Värdena från den andra tabellen blir helt fel; pi_pending innehåller summan av de tre mo-värdena, och de andra pi-värdena blir noll.
Kan jag få SUM-funktionerna för pi-värdena att fungera som de gör för mo-värdena, eller måste jag göra två queries för att få detta att fungera? Tips mottages med stor tacksamhet.
/a