PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 13/04/2020 19:15:18

HeadTrick24
Membre

nombre d'objets selon conditions

Bonjour,

après plusieurs essais, je n'arrive pas à avoir le bon résultat.
J'ai une table "appui" dans laquelle se trouvent des entités avec une colonne 'etat_appui' et une colonne 'type_pot'.
J'ai une autre table "contour_aerien" dans laquelle se trouve la colonne 'nb_appuis_bt_etudies'.
Les points de la table "appui" se trouvent dans le polygone de table "contour_aerien".
Par géométrie, je souhaite avoir le nombre de point avec les valeurs 'etat_appui'=BON et 'type_pot'=POT_BT dans le polygone de table "contour_aerien".
Sauf que j'obtiens à chaque fois 0...
Evidemment certains objets ont bien les valeurs 'etat_appui'=BON et 'type_pot'=POT_BT


CREATE OR REPLACE FUNCTION public.bt_func()
  RETURNS trigger AS
$BODY$
BEGIN
    select into NEW.nb_appuis_bt_etudies count(etat_appui)
    from appui
    where st_within(NEW.geom, appui.geom) and appui.type_pot LIKE 'POT_BT' and appui.etat_appui like 'BON';
    return NEW;
   
END;

Hors ligne

#2 13/04/2020 20:54:06

rjuju
Administrateur

Re : nombre d'objets selon conditions

Bonjour,

J'imagine que vous souhaitez mettre à jour l'information automatiquement lors d'une insertion ou mise à jour?  Le trigger est bien déclaré BEFORE INSERT/UPDATE?

Est-ce que la requête renvoie le bon résultat en l'exécutant manuellement ?

Hors ligne

#3 13/04/2020 21:26:21

HeadTrick24
Membre

Re : nombre d'objets selon conditions

Bonjour,
oui je souhaite mettre à jour automatiquement. Et oui le trigger est bien BEFORE INSERT OR UDAPTE
Manuellement ? comment fait-on ?

Hors ligne

#4 14/04/2020 08:53:14

rjuju
Administrateur

Re : nombre d'objets selon conditions

En réécrivant légèrement

select into NEW.nb_appuis_bt_etudies count(etat_appui)
    from appui
    where st_within(NEW.geom, appui.geom) and appui.type_pot LIKE 'POT_BT' and appui.etat_appui like 'BON';

pour que NEW.geom soit remplacé par votre géométrie (donc en sélectionnant votre ligne, avec une joinute), et en affichant le résultat plutôt qu'une clause INTO.

Hors ligne

Pied de page des forums