нужно осуществить выборку из таблицы сумм значений За вчера, За январь, За 2009. можно ли осуществить это одним запросом?
Ну для начала можно попробовать тупо в лоб: [sql](select за вчера) join (select за январь) join (select за 2009)[/sql] Если не получится (в чем я уверен чуть менее чем полностью, но mysql не перестает меня удивлять своими возможностями =)) ), то можно обернуть это в select. А там уж по обстоятельствам.
(SELECT sstat_value FROM global_sites_stat WHERE sstat_date = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) UNION (SELECT SUM(sstat_value) FROM global_sites_stat WHERE MONTH(sstat_date) = MONTH(DATE_SUB(NOW(), INTERVAL 1 MONTH)) GROUP BY sstat_siteid ) UNION (SELECT SUM(sstat_value) FROM global_sites_stat WHERE YEAR(sstat_date) = YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sstat_siteid) Это с помощью UNION. На выходе 2хмерный массив из 27 значений (по 3 для каждого из 9 сайтов). Сейчас буду думать как получить трехмерный массив.
energy2008 покажите пожалуйста что у вас var_dump() показывает на такой запрос если его через mysql_fetch_array прогнать
SELECT * FROM (SELECT sstat_value as sday, sstat_siteid FROM global_sites_stat WHERE sstat_date = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))) as tableday, (SELECT SUM(sstat_value) as smonth, sstat_siteid FROM global_sites_stat WHERE MONTH(sstat_date) = MONTH(DATE_SUB(NOW(), INTERVAL 1 MONTH)) GROUP BY sstat_siteid ) as tablemonth, (SELECT SUM(sstat_value) as syear, sstat_siteid FROM global_sites_stat WHERE YEAR(sstat_date) = YEAR(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sstat_siteid) as tableyear WHERE tableday.sstat_siteid = tablemonth.sstat_siteid AND tableyear.sstat_siteid = tableday.sstat_siteid Результат: Array ( [0] => Array ( [0] => 157 [sday] => 157 [1] => 1 [sstat_siteid] => 1 [2] => 4752 [smonth] => 4752 [3] => 1 [4] => 10688 [syear] => 10688 [5] => 1 ) [1] => Array ( [0] => 301 [sday] => 301 [1] => 2 [sstat_siteid] => 2 [2] => 7532 [smonth] => 7532 [3] => 2 [4] => 17042 [syear] => 17042 [5] => 2 ) [2] => Array ( [0] => 167 [sday] => 167 [1] => 3 [sstat_siteid] => 3 [2] => 5283 [smonth] => 5283 [3] => 3 [4] => 12029 [syear] => 12029 [5] => 3 ) [3] => Array ( [0] => 239 [sday] => 239 [1] => 4 [sstat_siteid] => 4 [2] => 7590 [smonth] => 7590 [3] => 4 [4] => 17287 [syear] => 17287 [5] => 4 ) [4] => Array ( [0] => 183 [sday] => 183 [1] => 5 [sstat_siteid] => 5 [2] => 6615 [smonth] => 6615 [3] => 5 [4] => 13530 [syear] => 13530 [5] => 5 ) [5] => Array ( [0] => 355 [sday] => 355 [1] => 6 [sstat_siteid] => 6 [2] => 10485 [smonth] => 10485 [3] => 6 [4] => 22575 [syear] => 22575 [5] => 6 ) [6] => Array ( [0] => 321 [sday] => 321 [1] => 7 [sstat_siteid] => 7 [2] => 9369 [smonth] => 9369 [3] => 7 [4] => 20186 [syear] => 20186 [5] => 7 ) [7] => Array ( [0] => 48 [sday] => 48 [1] => 8 [sstat_siteid] => 8 [2] => 2206 [smonth] => 2206 [3] => 8 [4] => 4047 [syear] => 4047 [5] => 8 ) [8] => Array ( [0] => 107 [sday] => 107 [1] => 9 [sstat_siteid] => 9 [2] => 3707 [smonth] => 3707 [3] => 9 [4] => 8487 [syear] => 8487 [5] => 9 ) )