Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2012, 23h39   #1
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 53
Points : 11
Points : 11
Par défaut Somme de données SQL pour un nombre de tuple différent

Bonjour,
Je dois faire une fonctionnalité qui affiche le montant investi par année pour le renouvellement et l’achat d’ordinateurs.
Le renouvellement et l'achat étant deux tables différentes j'ai donc fait deux requêtes différentes pour ensuite les sommer.
Cependant cela ne marche pas car les deux requêtes ne renvoient pas le même nombre de tuple.
Je ne sais pas comment faire pour résoudre le problème.
Voilà mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
$requete = "
SELECT Year(jour_mise_en_service) as Année, SUM(cout_achat) as cout
FROM Ordinateur
Group By Année
";
//on compte le montant investi chaque année pour les achats
 
$requete2 = "
SELECT Year(O.jour_mise_en_service) as Année, SUM(O.cout_achat) as cout2
FROM Ordinateur O, renouvellement R
WHERE R.nom_ordi=O.nom
AND R.type_traitement='changement effectué'
Group By Année
";
//on compte le montant investi pour le renouvellement en supposant que l'ordinateur ait la même valeur que lors de son achat
 
$resultat = mysql_query($requete) or die(mysql_error());
$resultat2 = mysql_query($requete2) or die(mysql_error());
 
print "<ul>";
while ($nuplet = mysql_fetch_assoc($resultat)  ) {
   //on somme ces deux couts
   $data = $nuplet['cout']+$nuplet['cout2'];
   print "<li>" .$data. " ".$nuplet['Année'];
   //et on les affiches selon l'année
   print "</li>";
}
print "</ul>";
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 00h43   #2
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

en conservant ton approche voici une solution :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
 
$requete = "
SELECT YEAR(jour_mise_en_service) as Année, SUM(cout_achat) as cout
FROM Ordinateur
GROUP BY Année
";
//on compte le montant investi chaque année pour les achats
 
$requete2 = "
SELECT YEAR(O.jour_mise_en_service) as Année, SUM(O.cout_achat) as cout2
FROM Ordinateur O INNER JOIN renouvellement R ON O.Nom = R.nom_ordi
WHERE R.type_traitement = 'changement effectué'
GROUP BY Année
";
//on compte le montant investi pour le renouvellement en supposant que l'ordinateur ait la même valeur que lors de son achat
 
$resultat = mysql_query($requete) or die(mysql_error());
$resultat2 = mysql_query($requete2) or die(mysql_error());
 
$data = array();
while($row = mysql_fetch_assoc($resultat)) {
   $data[$row['Année']] = (float) $row['cout'];
}
 
while($row = mysql_fetch_assoc($resultat2)) {
   $data[$row['Année']] += (float) $row['cout'];
}
?>
<ul>
   <?php foreach($data as $year => $price): ?>
   <li><?php echo $pricce.' '.$year; ?></li>
   <?php endforeach; ?>
</ul>
Je pense qu'il est tout à fait possible de récupérer directement tes sommes en une passe à partir de mysql. Mais là, vu l'heure tardive, je te laisse le soin de chercher (une piste : reagrde du côté des sous-requêtes dans la clause FROM)
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 08h53   #3
Candidat au titre de Membre du Club
 
mouloud jean
Inscription : septembre 2010
Messages : 53
Détails du profil
Informations personnelles :
Nom : mouloud jean

Informations forums :
Inscription : septembre 2010
Messages : 53
Points : 11
Points : 11
J'avais cherché une soltion directement via une requête SQL mais je n'ai pas réussi.
Merci pour l'aide !
hazaki est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h24.


 
 
 
 
Partenaires

Hébergement Web