Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 Re : Général » Trigger SUM/ GROUP BY postgresql » 20/07/2020 13:50:24
gid secteur site type_surf surface code_ent convention surface_to
201 ZAC BEAU SOLEIL NORD 02 233.164802191769 7316
202 ZAC BEAU SOLEIL NORD 01 150.222470300527 7316
203 ZAC BEAU SOLEIL NORD 01 181.560618462796 7316
204 ZAC BEAU SOLEIL NORD 01 100.418935165886 7316
205 ZAC BEAU SOLEIL NORD 01 111.748459693281 7316
206 ZAC BEAU SOLEIL NORD 01 56.2034740272345 7316
207 ZAC BEAU SOLEIL NORD 01 15.8995911087728 7316
208 ZAC BEAU SOLEIL NORD 01 3533.98304339476 7316
300 ZAC BEAU SOLEIL NORD 02 2902.80650284431 7316
200 ZAC BEAU SOLEIL NORD 01 17.3674759944427 7316
348 ZAC BEAU SOLEIL SUD 02 13440.8542233807 59846
349 ZAC BEAU SOLEIL SUD 02 5631.21243781833 59846
350 ZAC BEAU SOLEIL SUD 02 17990.8078116016 59846
351 ZAC BEAU SOLEIL SUD 02 20049.4232475934 59846
352 ZAC BEAU SOLEIL SUD 02 2626.74934858792 59846
Je souhaite que si un utilisateur créé une entité sur le site "BEAU SOLEIL NORD" ou supprime un entité, que comme mon champs surface (mis à jour automatiquement), mon calcul de surface_to (qui correspond à la sum des surfaces sur un site) se mette à jour automatiquement afin que tous ce qui en découle (statistique...) se mette à jour directement sans intervention d'un utilisateur.
#2 Re : Général » Trigger SUM/ GROUP BY postgresql » 20/07/2020 12:46:02
Je n'ai effectivement plus d'erreur en préfixant new.site mais il ne me fait quand même pas la surface par site.
Il me renvoi la surface de la nouvelle entité.
De plus j'ai cette fois un nouveau message d'erreur lors de la suppression de l'entité et je suis obligé de rendre inactif le trigger pour supprimer mon entité.
Erreur du fournisseur de données :
Erreur PostGIS lors de la suppression d'entité : ERREUR: l'enregistrement « new » n'est pas encore affectée
DETAIL: La structure de ligne d'un enregistrement pas encore affecté est indéterminée.
CONTEXT: instruction SQL « SELECT SUM(ST_Area(new.geom))group by new.site »
fonction PL/pgsql pole_technique.calcul_surf_total_site(), ligne 2 à affectation
#3 Re : Général » Trigger SUM/ GROUP BY postgresql » 20/07/2020 12:16:54
Alors je me suis peut être mal exprimé ou j'ai peut être mal construit ma requête mais voilà ce que je veux et ce que j'ai :
J'ai 1 table surfenh dans lequel j'ai des colonnes dont site, surface, surface_par_site...
Je veux que ma colonne surface_par_site me renvoi une surface en fonction du site. Pour un site, j'aurai donc 1 surface_par_site qui se répétera (oui c'est un peu bête peut être). J'ai donc 100 entités qui ont des surfaces différentes, sur 20 sites. J'aurai donc au final sur ma colonne surface_par_site 100 entités mais seulement 20 sommes différentes.
Pour information j'ai déjà testé :
BEGIN
NEW.surface_total:=SUM(ST_Area(new.geom))group by "site";
RETURN NEW;
END;
ou
BEGIN
NEW.surface_total:=SUM(ST_Area(new.geom))group by 'site';
RETURN NEW;
END;
Il me renvoi toujours la même erreur.
#4 Général » Trigger SUM/ GROUP BY postgresql » 20/07/2020 11:51:20
- charlene C
- Réponses : 8
Je souhaiterais que dans ma base se mette à jour automatique ma colonne surf total par site.
J'ai donc mis en place un trigger fonction :
BEGIN
NEW.surface_total:=SUM(ST_Area(new.geom))group by site;
RETURN NEW;
END;
Puis appliquer mon trigger sur ma couche.
Hors lorsque j’essaie d'ajouter une entité dans ma table sous QGIS et d'enregistrer pour voir le résultat voilà le message d'erreur que j'ai :
Erreur PostGIS lors de l'ajout d'entité : ERREUR: la colonne « site » n'existe pas
LINE 1: SELECT SUM(ST_Area(new.geom))group by site
Je ne comprend pas car ma colonne site existe bien.
Si vous avez des pistes, je suis preneuse....
Pages : 1