Мне нужно создать отчет в php:
- запрос клиента, упорядоченный по возрастанию.
- Суммируйте общий объем продаж для каждого клиента.
- добавить общий объем продаж в день.
- Добавьте общее количество всех клиентов.
Все это за диапазон дат:
select fecha, razonsocial , precioTotal
from ventas
LEFT JOIN clientes
ON idClientes = clientes_idClientes
where fecha BETWEEN '2016-11-30 00:00:00' AND '2016-11-30 23:59:59'
ORDER BY razonsocial ASC
Они говорят мне, что важные данные — это итоги, которые им не нужны для учета продаж за день, их интересуют только итоги.
Это моя структура:
CREATE TABLE IF NOT EXISTS `ventas` (
`idVenta` int(255) NOT NULL AUTO_INCREMENT,
`fecha` datetime NOT NULL,
`fecha_pago` datetime DEFAULT NULL,
`nota` int(255) NOT NULL,
`factura` varchar(45) DEFAULT NULL,
`porcDescuento` int(11) NOT NULL,
`tipo` int(1) NOT NULL COMMENT '1 Credito 2 Contado 3 Pendiente de pago 4 Pagado 5 Cancelada ',
`cantidad` int(255) DEFAULT NULL,
`peso` varchar(1000) DEFAULT NULL,
`unidad` int(1) DEFAULT NULL COMMENT '1 pza 2 gr 3 kg',
`precioTotal` decimal(12,2) NOT NULL,
`cancelacion` int(1) DEFAULT NULL,
`productos_idProducto` int(255) NOT NULL,
`usuarios_idUsuario` int(255) NOT NULL,
`clientes_idClientes` int(255) NOT NULL,
`empleados_idRepartidor` int(255) NOT NULL,
`Observaciones` text,
`ObservCancelacion` text,
PRIMARY KEY (`idVenta`),
KEY `fk_ventas_clientes1_idx` (`clientes_idClientes`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5975 ;
CREATE TABLE IF NOT EXISTS `clientes` (
`idClientes` int(255) NOT NULL AUTO_INCREMENT,
`nombre` varchar(45) NOT NULL,
`aPaterno` varchar(45) NOT NULL,
`aMaterno` varchar(45) DEFAULT NULL,
`razonsocial` varchar(50) DEFAULT NULL,
`rfc` varchar(30) NOT NULL,
`email` varchar(100) NOT NULL,
`calle` varchar(300) NOT NULL,
`tipo` int(1) DEFAULT NULL COMMENT '1 credito 2 contado 3 Pendiente de pago',
`tel` int(15) DEFAULT NULL,
`cel` int(20) DEFAULT NULL,
`activo` int(1) NOT NULL DEFAULT '1',
`estados_idEstado` int(255) NOT NULL,
`municipios_idMunicipio` int(255) NOT NULL,
`colonias_idColonia` int(255) NOT NULL,
`sucursales_idSucursal` int(255) NOT NULL,
PRIMARY KEY (`idClientes`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=49 ;
ALTER TABLE `ventas`
ADD CONSTRAINT `fk_ventas_clientes1`
FOREIGN KEY (`clientes_idClientes`)
REFERENCES `clientes` (`idClientes`) ON DELETE NO ACTION ON UPDATE NO ACTION;
[Версия]
Учителя У меня уже есть 2 запроса из 3, по которым мне помог мой партнер @marcelolemus
1- Добавьте общий объем продаж каждого клиента.
выберите название компании , СУММА (общая цена) от продаж LEFT JOIN customers ON customerid = customers_customerid ГДЕ дата МЕЖДУ '2016-11-30 00:00:00' И '2016-11-30 23:59:59' сгруппируйте по названию компании
3- Добавьте общее количество всех клиентов
выберите СУММУ (общая цена) из продаж, ГДЕ дата МЕЖДУ «2016-11-30 00:00:00» И «2016-11-30 23:59:59»
2- Добавьте общий объем продаж в день, выберите SUM (pricetotal) из продаж.
выберите СУММА (общая цена) из продаж
Я попытался с этим запросом, и он дает мне ошибку, что поле даты не существует, но у меня есть поле
выберите SUM (общая цена) как totalperday от продаж, ГДЕ дата МЕЖДУ «2016-11-30 00:00:00» И «2016-11-30 23:59:59» группировать по дате (дата-время)
Я изменил его, но он дает мне только 1 запись для каждого клиента о продаже между этими датами.
выберите SUM(общая цена) как totalperday от продаж, ГДЕ дата МЕЖДУ «2016-11-30 00:00:00» И «2016-11-30 23:59:59» группировать по дате
Я посплю немного, может быть, мне это нужно, я только что вернулся с ночной смены, хе-хе, спасибо, правда, иногда между снами выходит ответ, хе-хе.
Кажется, что вы запрашиваете довольно просто, я бы сказал, что только используя SUM() в запросе, вы сможете получить все значения.
Что касается заказа названия компании, я рекомендую передавать все результаты в массив, заменяя значения определяющими строками (имена клиентов), а затем упорядочивать их по тому, что вам нужно (сортировать, например).
Добавьте общий объем продаж каждого клиента.
Добавьте общее количество продаж в день
Добавьте общее количество всех клиентов