Я бы упростил то, что вы пытаетесь сделать, создав хранимая процедура, которая создаст статистику лидера / агента, а затем просто вызовет ее из вашего php (одного вызова) следующим образом:
полный скрипт здесь: http://pastie.org/1451802
, альтернативно, вы могли бы объединить ваши отдельные запросы в один оператор select / group by.
см. здесь: http://pastie.org/1451842
select
leaders.agent_name,
sum(leaders.job_value) as sum_job_value,
sum(leaders.points_value) as sum_points_value
from
(
select
agent_name,
job_number,
job_value,
points_value
from
jobs
where
year(booked_date) = 2011 and weekofyear(booked_date) = 2
union all
select distinct
agent_name,
0,0,0
from
apps
where
year(booked_date) = 2011 and weekofyear(booked_date) = 2
) leaders
group by
agent_name
order by sum_points_value desc;
drop procedure if exists list_leaders;
delimiter #
create procedure list_leaders
(
in p_year smallint unsigned,
in p_week tinyint unsigned
)
begin
create temporary table tmp_leaders(
agent_name varchar(20) not null,
job_number int unsigned not null default 0, -- note the default values
job_value decimal(3,1) not null default 0,
points_value decimal(8,2) not null default 0
)engine=memory;
insert into tmp_leaders (agent_name, job_number, job_value, points_value)
select agent_name, job_number, job_value, points_value from jobs
where year(booked_date) = p_year and weekofyear(booked_date) = p_week;
insert into tmp_leaders (agent_name) -- requires default values otherwise you will get nulls
select distinct agent_name from apps
where year(booked_date) = p_year and weekofyear(booked_date) = p_week;
select
agent_name,
sum(job_value) as sum_job_value,
sum(points_value) as sum_points_value
from
tmp_leaders
group by
agent_name order by sum_points_value desc;
drop temporary table if exists tmp_leaders;
end#
delimiter ;
call list_leaders(year(curdate()), weekofyear(curdate()));
connect_errno)
throw new exception(sprintf("Could not connect: %s", $db->connect_error));
$sqlCmd = "call list_leaders(2011, 2)";
$result = $db->query($sqlCmd);
if(!$result) throw new exception(sprintf("Invalid query : %s", $sqlCmd));
if($db->affected_rows <= 0){
echo "no leaders found !";
}
else{
$leaders = $result->fetch_all(MYSQLI_ASSOC);
foreach($leaders as $ldr){
// do stuff
echo $ldr["agent_name"], "
";
}
}
}
catch(exception $ex)
{
ob_clean();
echo sprintf("zomg borked - %s", $ex->getMessage());
}
if(!$db->connect_errno) $db->close();
ob_end_flush();
?>
Теперь попробуй проще - надеюсь, что это поможет:)
Добавляют начинающего к "Параметрам настройки системы":
Нажатие Высокий звук + F2 и выполненный gksu gedit /usr/share/applications/computer-janitor-gtk.desktop
, введите свой пароль root при выяснении.
Добавляют X-GNOME-Settings-Panel;X-GNOME-SystemSettings;
к строке "Categories=System;Настройки; PackageManager; GTK";.
Добавляют новую строку X-GNOME-Settings-Panel=computer-janitor-gtk
в конец файла, сохраняют и закрываются.
Удаляют значок из Средства запуска через, щелкают правой кнопкой по в †’ Remove from Launcher
.
И Вы добираетесь:
<час>
Средства запуска приложений хранятся в ~/.local/share/applications или в/usr/share/applications/(чтобы отредактировать Вас, должны открыться gksu nautilus
- но не портят Вашу систему!).Примечание: Когда приложение becames обновленный, часто .desktop файл becames обновленный, также (в/usr/..., не в ~/.local/...)