Vous n'êtes pas identifié(e).
Pages : 1
Bonjour, alors j'ai un petit souci plus dans la construction de ma requête que dans mon code php, je travail avec wamp 2 et phppgadmin, postgresql et en PDO
J'ai 3 tables : zone_activite, parcelle, bâtiments,
Chaque table contient un champ id en serial , et la table parcelles a en plus le champs id_zone_activite, qui contient l'id de la za dans laquelle se situe la parcelle, et la table bâtiments a en plus le champs id_parc, qui contient l'id de la parcelle dans laquelle se situe le bâtiment.
Je souhaite compter le nombre total de bâtiments par zone_activite.
et je n'arrive pas a faire cette requete!!
j'arrive a compter le nombre de parcelle par zone d'activité en faisant la requête suivante :
<?php
$nbreparc = $bdd->prepare('SELECT COUNT(id_parc) AS nbre_parc FROM parcelles WHERE id_zone_activite = ?') or die(print_r($bdd->errorInfo()));// on compte le nombre de parcelles lorsque le champ id_zone_activité = l'id de la za
$nbreparc->execute(array($_GET['info_za'])); // id de la za récupéré via l'url
$donnees_parc = $nbreparc->fetch() ; // on tri les données récupérées
echo 'Nombre total de parcelles de la za : '.$donnees_parc['nbre_parc'].''; // on affiche le nombre de parcelles
$nbreparc->closeCursor(); // Termine le traitement de la requête
?>
je n'arrive pas a compter le nombre de batiments, qui sont dans les parcelles de la za!!! j'ai essayé ceci mais cela ne fonctionne pas :
<?php
$idparc = $bdd->prepare('SELECT id_parc FROM parcelles WHERE id_zone_activite = ?') or die(print_r($bdd->errorInfo()));// on récupere les valeurs de l'id de toute les parcelles pour faire la jointure avec la table des batiments
$idparc->execute(array($_GET['info_za']));
$donnees_nomparc = $idparc->fetch();// on tri les données récupérées
$nbrebati = $bdd->prepare('SELECT COUNT(id_bati) AS nbre_bati FROM batiments WHERE id_parcelle = ?') or die(print_r($bdd->errorInfo())); // on compte le nombre de ligne où l'id_parcelle = l'id_parc récuperer par la requete précédente
$nbrebati->execute(array($donnees_nomparc['id_parc'])); / on tri les données récupérées
$donnees_bati = $nbrebati->fetch();
echo 'Nombre total de batiments de la za: '.$donnees_bati['nbre_bati'].''; // on affiche le résultat
?>
Une idée??
Hors ligne
Vous avez une erreur ? Quelle est la requête finalement envoyée à PostgreSQL ?
Marc.
Hors ligne
Un
SELECT COUNT(*) AS nbre_bati FROM batiments WHERE id_parcelle IN (SELECT id_parc FROM parcelles WHERE id_zone_activite = ?)
ne serait pas mieux ?
Guillaume.
Hors ligne
Désolé pour la réponse tardive. Merci pour votre réponse, j'ai lu des explications sur les jointures sql, et j'ai cette requete qui marche très bien :
$nbrebati = $bdd->prepare('SELECT count(*) AS nbre_bati FROM batiments b JOIN parcelles p ON (b.id_parcelle=p.id_parc) WHERE p. id_parc = ?');
$nbrebati->execute(array($_GET['info_parc']));
mais j'ai tester aussi le code de gleu, qui marche.
Merci problème résolu et mes connaissances en sql améliorées.
Hors ligne
Pages : 1