Requête SQL tableau 2 dimensions et code php
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 :
http://www.ass-galaxy.fr/download/tab.jpg
Requête actuel :
Code:
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 :
http://www.ass-galaxy.fr/download/ce.jpg
Extrait table demandes :
http://www.ass-galaxy.fr/download/dem.jpg
Extrait table patrimoine :
http://www.ass-galaxy.fr/download/pat.jpg
Extrait table intervensions :
http://www.ass-galaxy.fr/download/inter.jpg
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 :
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 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> |
D'avance merci à ceux qui auront pris le temps de lire ce message.