|
|
|
|
|
для: maximum7
(03.05.2010 в 18:58)
| | Попробовал сделать так:
$query = $DB->Query("
SELECT
YEAR(FROM_UNIXTIME(DokStart)) AS `year`,
COUNT(*) AS sum
FROM th_documents
WHERE DokStatus != 0
GROUP BY `year`
ORDER BY `year` DESC
");
while ($res = $query->FetchRow())
{
$qu = $DB->Query("
SELECT
DATE_FORMAT(FROM_UNIXTIME(DokStart), '%m') as month,
DATE_FORMAT(FROM_UNIXTIME(DokStart), '%Y') as goods,
COUNT(*) AS nums_month
FROM th_documents
WHERE
RubrikId = '2'
AND DokStatus != 0
AND DATE_FORMAT(FROM_UNIXTIME(DokStart), '%Y') = '".$res->year."'
GROUP BY `month`
ORDER BY DokStart ASC
");
while ($res2 = $qu->FetchRow())
{
$res2->month = str_ireplace($mid, $months, $res2->month);
array_push($dd2, $res2);
}
$res->months = $dd2;
array_push($dd, $res);
}
|
но, в результате получается:
Array
(
[0] => stdClass Object
(
[year] => 2010
[sum] => 68
[months] => Array
(
[0] => stdClass Object
(
[month] => Январь
[goods] => 2010
[nums_month] => 17
)
[1] => stdClass Object
(
[month] => Февраль
[goods] => 2010
[nums_month] => 23
)
[2] => stdClass Object
(
[month] => Март
[goods] => 2010
[nums_month] => 16
)
[3] => stdClass Object
(
[month] => Апрель
[goods] => 2010
[nums_month] => 12
)
)
)
[1] => stdClass Object
(
[year] => 2009
[sum] => 181
[months] => Array
(
[0] => stdClass Object
(
[month] => Январь
[goods] => 2010
[nums_month] => 17
)
[1] => stdClass Object
(
[month] => Февраль
[goods] => 2010
[nums_month] => 23
)
[2] => stdClass Object
(
[month] => Март
[goods] => 2010
[nums_month] => 16
)
[3] => stdClass Object
(
[month] => Апрель
[goods] => 2010
[nums_month] => 12
)
[4] => stdClass Object
(
[month] => Январь
[goods] => 2009
[nums_month] => 36
)
[5] => stdClass Object
(
[month] => Февраль
[goods] => 2009
[nums_month] => 38
)
[6] => stdClass Object
(
[month] => Март
[goods] => 2009
[nums_month] => 30
)
[7] => stdClass Object
(
[month] => Апрель
[goods] => 2009
[nums_month] => 22
)
[8] => stdClass Object
(
[month] => Май
[goods] => 2009
[nums_month] => 22
)
[9] => stdClass Object
(
[month] => Июнь
[goods] => 2009
[nums_month] => 13
)
[10] => stdClass Object
(
[month] => Июль
[goods] => 2009
[nums_month] => 19
)
[11] => stdClass Object
(
[month] => Август
[goods] => 2009
[nums_month] => 11
)
[12] => stdClass Object
(
[month] => Сентябрь
[goods] => 2009
[nums_month] => 10
)
[13] => stdClass Object
(
[month] => Октябрь
[goods] => 2009
[nums_month] => 14
)
[14] => stdClass Object
(
[month] => Ноябрь
[goods] => 2009
[nums_month] => 16
)
[15] => stdClass Object
(
[month] => Декабрь
[goods] => 2009
[nums_month] => 18
)
)
|
то есть в каждый последующий набор входят данные из предыдущего. Как их убрать? | |
|
|
|
|
|
|
| Добрый день,
Пытаюсь сделать архив документов. Есть таблица с документами th_documents, в которой дата создания документов храниться в DokStart. Нужно выбрать документы, сгруппировав по годам, после чего дополнительно нужно посчитать количество документов по месяцам. Плюс ко всему если в каком то месяце ничего не опубликовано всё равно нужно, чтобы месяц выводился. Пример того, что пытаюсь сделать: http://www.komodomedia.com/blog/ внизу страницы. Как такое реализовать?
$query = $AVE_DB->Query("
SELECT
YEAR(FROM_UNIXTIME(DokStart)) AS `god`
FROM th_documents
WHERE
RubrikId = '2'
AND Geloescht != 1
AND DokStatus != 0
AND (DokEnde > '" . time() . "') AND (DokStart < '" . time() . "')
GROUP BY `god`
ORDER BY `god` DESC
");
while ($res = $query->FetchAssocArray())
{
$res['month'] = array('','01','02','03','04','05','06','07','08','09','10','11','12');
array_push($dd, $res);
}
|
Годы я получил, месяца есть, теперь как правильно выбрать количество публикаций за месяц в массив? | |
|
|
|
|