Zes jaar geleden vroeg je iets vergelijkbaars.
https://www.phphulp.nl/php/forum/topic/optellen-in-mysql-database/99949/
Ik heb het voorbeeld wat uitgebreid met deze mysql data:
DROP TABLE IF EXISTS `kaartjes`;
CREATE TABLE `kaartjes` (
`klant_id` int(10) NOT NULL AUTO_INCREMENT,
`klant_naam` varchar(100) NOT NULL,
`klant_aantal` int(10) NOT NULL,
`prijs` decimal(5,2) NOT NULL,
`Voorstelling_id` int(10) NOT NULL,
`Betaald_kenmerk` char(5) NOT NULL,
`Crediteer` char(5) NOT NULL,
PRIMARY KEY (`klant_id`),
UNIQUE KEY `klant_id` (`klant_id`),
KEY `klant_naam` (`klant_naam`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `kaartjes` (`klant_id`, `klant_naam`, `klant_aantal`, `prijs`, `Voorstelling_id`, `Betaald_kenmerk`, `Crediteer`) VALUES
(1, 'Jansen, G.J', 2, 7.00, 1, 'KP', 'Nee'),
(2, 'Klaveren, K. van', 3, 9.50, 1, 'KC', 'Ja'),
(3, 'Pietersen, M.', 5, 10.00, 2, 'KP', 'Nee'),
(4, 'Zegwaard, K.L. van', 3, 10.00, 2, 'KC', 'Ja'),
(5, 'Rompaai, Jan van', 2, 10.00, 2, 'KP', 'Nee'),
(6, 'Zegwaard, K.L. van', 2, 25.00, 7, 'KL', 'Nee');
SELECT * FROM kaartjes;
SELECT klant_id,
klant_naam ,
prijs,
COALESCE( SUM(klant_aantal), 0) AS aantal,
COALESCE( SUM(klant_aantal * prijs ), 0 ) AS totaal,
Voorstelling_id,
Betaald_kenmerk,
Crediteer
FROM kaartjes WHERE Voorstelling_id <> 0
GROUP BY Voorstelling_id, klant_id
ORDER BY klant_naam ASC, Voorstelling_id;
SELECT Betaald_kenmerk AS kenmerk, SUM(klant_aantal ) AS aantal FROM kaartjes WHERE Betaald_kenmerk = 'KP';
SELECT Betaald_kenmerk AS kenmerk, SUM(klant_aantal ) AS aantal FROM kaartjes GROUP BY Betaald_kenmerk;
[size=xsmall]
Toevoeging op 08/02/2022 16:52:56:[/size]
En voor het gemak een webpagina.
Het connect.php bestand maakt een verbinding met new mysqli();
<!DOCTYPE HTML>
<html>
<head>
<title>Kaartjes</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<meta name="viewport" content="user-scalable=1, width=device-width, initial-scale=1.0, maximum-scale=2.0, minimum-scale=1.0" />
<style>
html {
font-size: 13px;
}
body:before {
content: "";
position: fixed;
top: -10px;
left: 0px;
width: 100%;
height: 10px;
z-index: 100;
-webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
-moz-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
box-shadow: 0px 0px 10px rgba(0,0,0,.8);
}
div#container {
font-family: Futura;
font-size: 1.0em;
max-width: 550px;
border: 0.100em solid red;
padding: 1.000em;
margin: 1.000em auto;
background-color: ivory;
-webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
-moz-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
box-shadow: 0px 0px 10px rgba(0,0,0,.8);
}
table, th, td {
border: 0.100em solid navy;
border-collapse: collapse;
}
table {
width: 100%;
}
th {
text-align: left;
background-color: #dcdc00;
}
th, td {
padding: 0.500em;
}
tr:nth-child(odd) {
background: #dcdcdc;
}
tr:nth-child(even) {
background: #dcdcaa;
}
tr.footer {
background: #dcdc00;
}
tr.footer td:nth-child(3),
tr.footer td:nth-child(4) {border-top: 0.300em solid navy !important;}
td.right {text-align: right;}
</style>
</head>
<body>
<div id="container">
<h2>Kaartverkoop</h2>
<table style="border:0.100em solid red;width:100%;">
<thead>
<tr>
<th style="text-align: left;">Klant</th>
<th style="text-align: right;">Prijs</th>
<th style="text-align: right;">Aantal</th>
<th style="text-align: right;">Totaal</th>
<th>Voorstelling</th>
<th>Betaald</th>
<th>Crediteer</th>
</tr>
</thead>
<?php
include ('connect.php');
if ( $db_result )
{
$query = "SELECT klant_id,
klant_naam ,
prijs,
COALESCE( SUM(klant_aantal), 0) AS aantal,
COALESCE( SUM(klant_aantal * prijs ), 0 ) AS totaal,
Voorstelling_id,
Betaald_kenmerk,
Crediteer
FROM kaartjes WHERE Voorstelling_id <> 0
GROUP BY Voorstelling_id, klant_id
ORDER BY klant_naam ASC, Voorstelling_id;";
if ( $result = $db->query( $query ) )
{
while( $row = $result->fetch_object() )
{
?>
<tr>
<td><?php echo $row->klant_naam; ?></td>
<td style='text-align: right;'><?php echo $row->prijs; ?></td>
<td class='right'><?php echo $row->aantal; ?></td>
<td class='right'><?php echo $row->totaal; ?></td>
<td class='right'><?php echo $row->Voorstelling_id; ?></td>
<td class='right'><?php echo $row->Betaald_kenmerk; ?></td>
<td class='right'><?php echo $row->Crediteer; ?></td>
</tr>
<?php
}
}
$query = "SELECT
SUM(klant_aantal) AS aantal,
SUM(klant_aantal * prijs) AS totaal
FROM kaartjes WHERE Voorstelling_id <> 0;";
if ( $result = $db->query( $query ) )
{
while( $row = $result->fetch_object() )
{
?>
<tr class='footer'>
<td>Totaal</td>
<td></td>
<td class='right'><?php echo $row->aantal; ?></td>
<td class='right'><?php echo $row->totaal; ?></td>
<td></td>
<td></td>
<td></td>
</tr>
<?php
}
}
}
?>
</table>
</div>
</body>
</html>