Bonjour,
J'ai besoin de vos lumières. Je n'arrive pas à faire une requête qui en théorie ne doit pas être bien compliqué mais je fais une blocage sur sa création.
Je souhaite réaliser un tableau en 2 dimensions ressemblant à ceci :
Requête actuel :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT count(interventions.inter_id) as nb_inter, title, patrimoine.id, ce.nom_ce FROM `demandes` LEFT JOIN interventions ON demandes.id = interventions.id_dem LEFT JOIN patrimoine ON demandes.site_nv1 = patrimoine.id CROSS JOIN (SELECT id_ce, nom_ce FROM corp_etat) AS ce ON interventions.corp_etat = ce.id_ce WHERE parent_id='14' AND secteur='1' AND corp_etat IS NOT NULL GROUP BY site_nv1, ce.id_ce
Cette requête à pour but de calculer le nombre d'intervention par site et par corp d'état. Seulement si il n'y a pas d'intervention pour un corp d'état mon tableau n'est pas bon. J'ai voulu avec la requête ci-dessus forcer à me donner pour chaque corp_etat le nombre d'interventions même si celui-ci est null mais ça ne fonctionne pas.
Table corp_etat :
Extrait table demandes :
Extrait table patrimoine :
Extrait table intervensions :
J'aurai une deuxième question sur la réalisation du code PHP.
Auriez-vous récupéré les résultats dans des array pour les mettres en forme ou par une autre méthode ?
Pour ma part j'ai fait cela mais je pense sans me tromper que vous allez dire que c'est pas propre (en plus y'a une erreur car le dernier total n'est pas affiché).
Code du tableau affiché en haut du sujet :
D'avance merci à ceux qui auront pris le temps de lire ce message.
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 <table border="1" align="center" style="font-size:9pt"> <tr> <th>Sites</th> <?php $req_ce = mysql_query (" SELECT id_ce, nom_ce FROM corp_etat"); $nb_ce = mysql_num_rows($req_ce); while ($sql_ce = mysql_fetch_array($req_ce)){ echo '<th style="padding: .5em">'.$sql_ce['nom_ce'].'</th>'; } ?> <th>TOTAL</th> </tr> <?php $snv1 = ""; $nb_inter_total_snv1 = 0; //$array_snv1 = array(); //$array_test = array(); $req_snv1 = mysql_query (" SELECT count(interventions.inter_id) as nb_inter, title, patrimoine.id, ce.nom_ce FROM `demandes` LEFT JOIN interventions ON demandes.id = interventions.id_dem LEFT JOIN patrimoine ON demandes.site_nv1 = patrimoine.id CROSS JOIN (SELECT id_ce, nom_ce FROM corp_etat) AS ce ON interventions.corp_etat = ce.id_ce WHERE parent_id='14' AND secteur='1' AND corp_etat IS NOT NULL GROUP BY site_nv1, ce.id_ce"); while ($sql_snv1 = mysql_fetch_array($req_snv1)){ //$array_test[] = $sql_snv1; //array_push ($array_snv1, $sql_snv1['nb_inter']); if ($snv1<>"" AND $snv1<>$sql_snv1['id']) { echo '<td align="center"><b>'.$nb_inter_total_snv1.'</b></td>'; $nb_inter_total_snv1 = 0; echo '</tr>'; } if ($snv1<>$sql_snv1['id']){ echo '<tr>'; echo '<td><b>'.$sql_snv1['title'].'</b></td>'; echo '<td align="center">'.$sql_snv1['nb_inter'].'</td>'; $nb_inter_total_snv1 = $nb_inter_total_snv1+$sql_snv1['nb_inter']; } else { echo '<td align="center">'.$sql_snv1['nb_inter'].'</td>'; $nb_inter_total_snv1 = $nb_inter_total_snv1+$sql_snv1['nb_inter']; } $snv1 = $sql_snv1['id']; } //print_r($array_snv1); //print_r($array_test); ?> </table>
Partager