SELECT count(*) FROM news WHERE author = 1 AS total, count(*) FROM news WHERE author = 1 AND moderated = 1 AS moderated
da się obrobić jedną kwerendą czy trzeba rozbijać na dwie?
SELECT count(*) FROM news WHERE author = 1 AS total, count(*) FROM news WHERE author = 1 AND moderated = 1 AS moderated
Takie coś, zakładając, że w kolumnie moderated są wartości 0/1 zwróci Ci dwa wiersze, jedno z liczbą sprawdzonych, drugie z liczbą niesprawdzonych aktualności. Łączną liczbę możesz sobie wyliczyć jako sumę tych dwóch wierszy.
SELECT count(*) AS cnt, moderated FROM news WHERE author = 1 GROUP BY moderated
const NEWS_TYPE_AWAITING = 0; const NEWS_TYPE_ADDED = 1; const NEWS_TYPE_DELETED = -1; $details = [ NEWS_TYPE_AWAITING => 0, NEWS_TYPE_ADDED => 0, NEWS_TYPE_DELETED => 0 ]; foreach ($db->query(...)->fetchAll() as $row) { $details[$row['moderated']] = $row['cnt'] } $result = [ 'details' => $details, ]; /* Array ( [details] => Array ( [NEWS_TYPE_AWAITING] => 0, [NEWS_TYPE_ADDED] => 100, [NEWS_TYPE_DELETED] => 23 ), [total] => 123 ) */