Bonjour,
Voilà tout est dans le titre.
Je suis obligé de l afire plein de fois, ce qui me donne des temps de réponse très très long.
Notamment pour des tableaux à double entrée (état des vents par exemple)
Merci d'avance de votre aide.
Bonjour,
Voilà tout est dans le titre.
Je suis obligé de l afire plein de fois, ce qui me donne des temps de réponse très très long.
Notamment pour des tableaux à double entrée (état des vents par exemple)
Merci d'avance de votre aide.
Ben tu fais pas de boucles
Non, plus sérieusement, pourrais-tu être plus clair, nous montrer ton bout de code sql ... ainsi que ton SGBD.
Cdlt
Ok, merci de ton aide, voici un état des ventes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 <table width="99%" cellpadding="0" cellspacing="0" border="1" bordercolor="#999999" style="empty-cells: show; border-collapse: collapse;"> <tr class="entete_tableau"> <td colspan="14" align="center">État des ventes</td> </tr> <tr class="entetecellule"> <td>Article</td> <?php //Boucle pour lister les mois $retour_mois = mysql_query("SELECT nom_mois, id_mois, num_mois FROM mois ORDER BY id_mois"); $mois = array(); while ($donnees_mois = mysql_fetch_array($retour_mois)) { $mois[$donnees_mois['id_mois']] = $donnees_mois['num_mois'];?> <td width="7%"><?php echo $donnees_mois['nom_mois']; ?></td> <?php } ?> <td width="5%">Total</td></tr> <?php $retour_article = mysql_query("SELECT id_article FROM article WHERE groupe_stat='$famille' AND groupe_produit='$sous_famille' ORDER BY id_article"); while ($donnees_article = mysql_fetch_array($retour_article)) { ?> <tr> <td align="left"> <?php echo $donnees_article['id_article']; ?> </td> <?php $retour_mois = mysql_query("SELECT nom_mois, id_mois, num_mois FROM mois ORDER BY id_mois"); while ($donnees_mois = mysql_fetch_array($retour_mois)) { ?> <td> <?php $retour_vente_mois = mysql_query(" SELECT SUM(quantite) AS somme FROM commande_detail cd JOIN commande c ON cd.num_cmde=c.num WHERE YEAR(c.date_commande)='$annee_rch' AND MONTH(c.date_commande)='".$donnees_mois['num_mois']."' AND cd.article='".$donnees_article['id_article']."' GROUP BY cd.article, MONTH(c.date_commande) ORDER BY cd.article, MONTH(c.date_commande)"); $donnees_vente_mois = mysql_fetch_array($retour_vente_mois); echo $donnees_vente_mois['somme']; ?></td> <?php } ?> </tr><?php } ?> </table> </center>
En fait je liste les mois, puis les produits, et pour chaque croisement je fais la somme donc si 100 produits alors 12*100 requêtes !
Voilà, merci d'avance.
Heu, c'est clair que c'est très crade ! :S
Je pense qu'il y a une solution en sql, au lieu de faire 3 appels de requêtes (une pour les mois, une autre pour les articles, et une dernière pour leur combinaison ...), si tu fais une seule requête avec un GROUP BY, ca devrait marcher je crois.
SELECT ...
FROM ...
WHERE ...
GROUP BY id_mois, id_article
Je suis un peu rouillé en sql, mais un truc comme ça devrait te permettre d'alléger sérieusement tes temps de réponses ...
Oui merci, en fait je l'ai déjà fait :
Le soucis est dans l'affichage des données,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 $retour_vente_mois = mysql_query("SELECT SUM(quantite) AS somme,article, MONTH(c.date_commande) as mois FROM commande_detail cd JOIN commande c ON cd.num_cmde=c.num JOIN article a ON cd.article=a.id_article WHERE YEAR(c.date_commande)='$annee_rch' GROUP BY article, MONTH(c.date_commande) ORDER BY article, MONTH(c.date_commande)"); while ($donnees_vente_mois = mysql_fetch_array($retour_vente_mois)) { $id_article = $donnees_vente_mois['article']; $somme = $donnees_vente_mois['somme']; $mois = $donnees_vente_mois['mois']; $articles[$id_article][$mois] = $somme; }
Comment faire un jolie tableau avec cette reqûete ?
Là je t'avoues que c'est une autre paire de manches ...
Comme ça je ne vois pas trop désolé, il faut s'y pencher sérieusement dessus et là je n'en ai pas le courage dsl ...
Bonjour,
Avec une telle masse d'informations que tu nous fournis, c'est pas gagné.
Partager