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 :
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>
D'avance merci à ceux qui auront pris le temps de lire ce message.