Bonjour à tous,

Je rencontre à nouveau un problème concernant cette fois ci un problème de tri et /d'ordre dans mes colonnes.

Je souhaite affiché dans une première colonne les différents types de bien puis de leur associé des résultats selon différents périmètres : communes, intercommunalités, département.

Pour afficher les types de biens j'utilise la requête (req_pi) construite pour l'échelle du département et pour les résultats j'utilise une requête propre à chaque échelle.

Cela fonctionne très bien à toutes les échelles lorsque qu'il y a au moins une occurrence par type de bien. Cependant j'ai un problème lorsqu'une commune ne possède pas tous les types de bien.
En effet les types de bien existants sont bien représentés mais pas assimilés à la bonne ligne.
Les types de biens présents dans les communes sont classés dans l'ordre mais du coup sont décalés par rapport à l'ordre général...

Si j'utilise la requête (req_pa)de construire pour afficher pour l'échelle des communes cela fonctionne mais du coup ne présente plus les types non représentés dans cette commune...

Je pense que cela n'est pas très clair donc voici le code pour vous aider.

j'ai bien tenter des tri ASC et DESC qui change ne solutionne qu'une partie de mon problème mais pas la totalité...


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
$req_var= pg_query($base,"SELECT COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE insee='".$commune."' GROUP BY insee");
		$req_a= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE insee='".$commune."' GROUP BY type_bien order by type_bien");
		$req_pa= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE superficie>0 and insee='".$commune."' GROUP BY type_bien order by type_bien");
 
		$req_vor= pg_query($base,"SELECT COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE superficie>0 and insee IN (SELECT insee FROM commune_ceso WHERE code_epci='".$epci."')");
		$req_o= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE insee IN (SELECT insee FROM commune_ceso WHERE code_epci='".$epci."') GROUP BY type_bien order by type_bien");
		$req_po= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE superficie>0 and insee IN (SELECT insee FROM commune_ceso WHERE code_epci='".$epci."') GROUP BY type_bien order by type_bien");
 
		$req_vir= pg_query($base,"SELECT COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE insee IN (SELECT insee FROM commune_ceso WHERE code_epci!='17')");
		$req_i= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE insee IN (SELECT insee FROM commune_ceso WHERE code_epci!='17') GROUP BY type_bien order by type_bien");
		$req_pi= pg_query($base,"SELECT type_bien, COUNT(id) as nb, sum(superficie) as surf, sum(prix) as prix, sum(prix_m) as moy FROM logpriv_13
		WHERE superficie>0 and insee IN (SELECT insee FROM commune_ceso WHERE code_epci!='17') GROUP BY type_bien order by type_bien");
 
		$rep_va = pg_fetch_assoc($req_var);
		$rep_vo = pg_fetch_assoc($req_vor);
		$rep_vi = pg_fetch_assoc($req_vir);
 
		echo "<h2>Fiche Marché locatif privé</h2><br><table width='100%' id=table1>
 
while($rep_i = pg_fetch_assoc($req_pi))
					{
			$rep_o = pg_fetch_assoc($req_po);
			$rep_a = pg_fetch_assoc($req_pa);
			echo "<tr>
				<td class='defaut' bgcolor='#FBFA50'><h4>Prix : ".$rep_i['type_bien']." (nombre de logements)</h4></td>
				<td class='defaut'><h3>".number_format($rep_a['moy']/$rep_a['nb'],1,',',' ')." &nbsp;(
				".number_format($rep_a['nb'],0,',',' ')." )&nbsp;</h3></td>
				<td class='defaut'><h3>".number_format($rep_o['moy']/$rep_o['nb'],1,',',' ')." &nbsp;(
				".number_format($rep_o['nb'],0,',',' ')." )&nbsp;</h3></td>
				<td class='defaut'><h3>".number_format($rep_i['moy']/$rep_i['nb'],1,',',' ')." &nbsp;(
				".number_format($rep_i['nb'],0,',',' ')." )&nbsp;</h3></td>
			</tr>";
					}
Merci d'avance pour votre contribution.