Fonction SUM SQL
Résolu
LaChaux78
Messages postés
583
Date d'inscription
Statut
Membre
Dernière intervention
-
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
LaChaux78 Messages postés 583 Date d'inscription Statut Membre Dernière intervention -
Bonjour, J'ai une table SQL qui me permet de gérer mes frais kilomètriques. Afin de pouvoir additionner tous mes kilomètres d'un même champ, j'ai utilisé la fonction SUM. Malheureusement j'ai dû faire deux requètes au lieu d'une seule sinon mon tableau me retourne simplement qu'une seule entrée à l'affichage. Par contre la fonction SUM joue bien son rôle.
Y a t-il possibilité de faire une seule requète. Je vous remercie.
Voici mes requètes.
Y a t-il possibilité de faire une seule requète. Je vous remercie.
Voici mes requètes.
echo '<div id="tablo">'; echo '<table width="80%" border="2" cellspacing="1" cellpadding="4">'; echo '<tr>'; echo '<td class="sous-entete">Date</td>'; echo '<td class="sous-entete">Trajet</td>'; echo '<td class="sous-entete">Kilomètre</td>'; echo '</tr>'; $sql = "SELECT cdc_frais.km, SUM(cdc_frais.km) AS totalkm FROM cdc_frais"; $result2 = executeQuery($sql,$datas); $donnees2 = $result2->fetch(); $sql = "SELECT dtrajet, libelle, cdc_frais.km, YEAR(dtrajet) AS annee FROM cdc_frais LEFT JOIN cdc_trajet ON cdc_trajet.idtrajet = cdc_frais.idtrajet ORDER BY dtrajet ASC"; $result = executeQuery($sql,$datas); $an = 0; while ($donnees = $result->fetch()) { if($donnees->annee != $an) { $an = $donnees->annee; echo '<h1>'.$title.' '.$an.' <br/>Soit '.$donnees2->totalkm.' Km</h1>'; } echo '<tr>'; echo '<td class="ligne1">'.dateFR($donnees->dtrajet).'</td>'; echo '<td class="ligne1">'.$donnees->libelle.'</td>'; echo '<td class="ligne1">'.$donnees->km.'</td>'; echo '</tr>'; } echo '</table>'; echo '</div>';
A voir également:
- Mysql sum
- Mysql community server - Télécharger - Bases de données
- Fonction sum excel - Guide
- Could not connect to mysql! please check your database settings! - Forum Redhat
- Phpmyadmin a tenté de se connecter au serveur mysql, et le serveur a rejeté la connexion. merci de vérifier les valeurs de host, username et password dans la configuration et de s'assurer qu'elles correspondent aux informations fournies par l'administrateur du serveur mysql. ✓ - Forum PHP
- Md5 sum - Télécharger - Web & Internet
9 réponses
Bonjour,
Dans ton exemple je ne comprends pas comment, sur quel(s) critère(s), tu veux regrouper les km.
Pour regrouper, il faut utiliser le GROUP BY, exemple
Dans ton exemple je ne comprends pas comment, sur quel(s) critère(s), tu veux regrouper les km.
Pour regrouper, il faut utiliser le GROUP BY, exemple
select annee, sum(km) from table group by annee
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je pense que tu auras le même résultat avec cette seule requête:
SELECT tkm.totkm as totalkm, dtrajet, libelle, cdc_frais.km, YEAR(dtrajet) AS annee FROM cdc_frais LEFT JOIN cdc_trajet ON cdc_trajet.idtrajet = cdc_frais.idtrajet JOIN (SELECT SUM(cdc_frais.km) AS totkm FROM cdc_frais) as tkm ORDER BY dtrajet ASC
Exact je me suis trop précipité. Effectivement j'ai créé une entrée fictive une date en 2019 et ça la prends en compte dans le total des kms alors que ça ne devrait pas.
Déjà j'ai rajouté une clause WHERE pour n'afficher que l'année en cours.
mais pour le total des kms pour l'année en cours je ne vois pas?
je vous remercie.
Déjà j'ai rajouté une clause WHERE pour n'afficher que l'année en cours.
WHERE YEAR(dtrajet) = YEAR(NOW())
mais pour le total des kms pour l'année en cours je ne vois pas?
je vous remercie.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je suis toujours avec mes deux tables.
$sql = "SELECT idfrais, dtrajet, km, SUM(km) AS totalkm FROM cdc_frais WHERE YEAR(dtrajet) = YEAR(NOW()) ORDER BY dtrajet ASC"; $result2 = executeQuery($sql,$datas); $donnees2 = $result2->fetch(); $sql = "SELECT idfrais, libelle, dtrajet, cdc_frais.km, YEAR(dtrajet) AS annee FROM cdc_frais LEFT JOIN cdc_trajet ON cdc_trajet.idtrajet = cdc_frais.idtrajet WHERE YEAR(dtrajet) = YEAR(NOW()) ORDER BY dtrajet ASC"; $result = executeQuery($sql,$datas); $an = 0; while ($donnees = $result->fetch()) { if($donnees->annee != $an) { $an = $donnees->annee; echo '<h1>'.$title.' '.$an.' <br/>Soit '.$donnees2->totalkm.' Km</h1>'; } echo '<tr>'; echo '<td class="ligne1">'.dateFR($donnees->dtrajet).'</td>'; echo '<td class="ligne1">'.$donnees->libelle.'</td>'; echo '<td class="ligne1">'.$donnees->km.'</td>'; echo '</tr>'; } echo '</table>'; echo '</div>';
cette requête seule devrait donner le total des km par an:
SELECT yrkm as totalkm, dtrajet, libelle, cdc_frais.km, YEAR(dtrajet) AS annee FROM cdc_frais LEFT JOIN cdc_trajet ON cdc_trajet.idtrajet = cdc_frais.idtrajet LEFT JOIN (SELECT SUM(km) AS yrkm, YEAR(dtrajet) as yr FROM cdc_frais group by YEAR(dtrajet)) as tkm ON YEAR(dtrajet) = yr ORDER BY dtrajet ASC
si tu n'es intéressé que par l'année en cours:
SELECT yrkm as totalkm, dtrajet, libelle, cdc_frais.km, YEAR(dtrajet) AS annee FROM cdc_frais LEFT JOIN cdc_trajet ON cdc_trajet.idtrajet = cdc_frais.idtrajet JOIN (SELECT SUM(km) AS yrkm FROM cdc_frais where YEAR(dtrajet) = YEAR( NOW() ) ) as tkm WHERE YEAR(dtrajet) = YEAR( NOW() ) ORDER BY dtrajet ASC