47
select SUM(price) as count
from orders, klients
where klients.id_kl=orders.id_kl and klients.id_kl=?;
Для выборки всех заказов данного менеджера используется запрос с
группировкой и агрегатной функцией SUM().
SELECT id_ord, klients.id_kl as id_kl, name_kl as name,nom, status, data,
sum(price* orders.count) as s FROM orders,klients,products WHERE
klients.id_kl=orders.id_kl and products.id_eq=orders.id_eq and
id_man=".$id_man." group by nom;
Для реализации покупательской корзины была создана таблица backet,
в которую, как во временный буфер сохраняются товары, выбранные
клиентом. Был создан сложный запрос с вложенным подзапросом.
select id_eq, name_eq, specif, price, id_typ
from products where id_eq in (select id_eq from backet where
id_kl=".$id_kl." and id_man=".$id_man.");
С помощью данного запроса выбираются из таблицы products по
номерам те товары, которые находятся в корзине и соответствуют
требуемому клиенту и менеджеру.
В корзине могут содержаться товары, соответствующие разным
менеджерам и клиентам и из разных заказов. Это следует учитывать при
удалении товаров из корзины. После нажатия кнопки КУПИТЬ все
купленные данным клиентом товары должны поступить в соответствующий
заказ таблицы orders. Номер данного заказа рассчитывается как
максимальный номер заказа из таблицы orders плюс один. Затем все
выбранные пользователем товары сохраняются в таблицу orders, а из
корзины они соответственно удаляются. Вся последовательность данных
операций описана в нижеприведенной процедуре.
public function empti_backet_db($id_kl, $id_man)
{
$query="select max(nom)+1 as max from orders;";
$st = $this->db->prepare($query);
$st->execute();
$st->bind_result($max);
$i=0;