Я реализую доклад, где я печатаю лекарства, обеспеченные пациентов конечно период времени, это остается так.
Я хочу, чтобы, если есть равные даты, Вы сложили дозы, общая сумма, concatene цену за единицу товара и счета оставаясь таким
Кодекс этот
$suma=0;
$totales=0;
$i = 9;
$fecha1="";
$precio = 0;
foreach($reporte as $row):
if ($fecha1 != $row['fecha'] ) {
$precio = $row['Totalprecio'];
$dosis = $row['dosis'];
$factura=$row['noFactura'];
}else {
$precio = $precio + $row['Totalprecio'];
$dosis = $dosis + $row['dosis'];
$factura=$row['noFactura'].','.$factura;
}
$totales = $precio;
$suma=$suma + $precio;
if ($fecha1 != $row['fecha'] ) {
$precio = $row['Totalprecio'];
$dosis = $row['dosis'];
$objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $row['fecha']);
$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, round($row['peso'],2)." KG");
$objPHPExcel->getActiveSheet()->setCellValue('C'.$i, $row['Medicamento']);
$objPHPExcel->getActiveSheet()->setCellValue('D'.$i, $dosis);
$objPHPExcel->getActiveSheet()->setCellValue('E'.$i, $row['precio']);
$objPHPExcel->getActiveSheet()->setCellValue('F'.$i, 'Monto: $'.round($totales,2). '
}
$objPHPExcel->getActiveSheet()->getStyle('A'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('B'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('C'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('D'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('E'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->getStyle('F'.$i)->applyFromArray($bordear)->getAlignment()->setWrapText(true);
$i++;
endforeach;
Это консультация SQL
SELECT a.fecha, a.peso, SUM(d.dosis) AS dosis, a.nDosis,group_concat(f.noFactura,' (',d.dosis,') ') AS noFactura, f.precio * d.dosis AS Tprecio, f.precio, a.Medico, m.nombreMedicamento
FROM app a
JOIN dosis d ON a.idDosis = d.idDosis
JOIN facturas f ON d.idFactura = f.idFactura
JOIN medicamentos m ON m.idMedicamento = f.idMedicamento
WHERE a.fecha BETWEEN '2019-02-01' AND '2019-02-31' AND a.idPaciente = '23' GROUP BY f.noFactura, a.fecha ORDER BY a.fecha;
Я сделана неразбериху при этом из if уже я это попробовал нескольких форм, но я не добиваюсь, чтобы остался, как я хочу, я надеюсь, что кто-то может помогать мне заранее Спасибо!
SQL очень хороший, чтобы делать суммы, распоряжения и группирования, из-за которого deberГ, - когда ты быть первым opciГіn для этого типа заданий. Исправляя группирование ты уберегаешься sumatorias в PHP, исключая Полную Общую сумму.
SELECT fecha
, peso
, medicamento
, sum(dosis)
, group_concat(noFactura,' (',dosis,') ') AS noFactura
, group_concat(precio) AS precio
, sum(precio * dosis) AS Totalprecio
FROM aplicaciones
WHERE fecha BETWEEN '2019-10-01' AND '2019-10-31'
AND idPaciente = '2'
GROUP BY fecha, idMedicamento