#1 Fri 08 October 2021 16:04
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
jointure sur predicat geométrique
Bonjour,
Ma question va vraiment paraitre bête mais bon. J'ai du mal avec la logique des types de jointure couplé au prédicat géométrique.
J'ai une table A (4000 objets à l'intérieure B) et une table B (19 000 objets)
Je veux selectionner tous les éléments de B et prendre les éléments de A contenu dans B en ne prenant que les valeurs max pour le champ date de A grouper selon l'identifiant de B (en gros si j'ai deux points A dans un polygone B je veux que seule la valeur max soit prise en compte ).
j'ai fait une requête :
Code:
select b.id, max(a.date_obs) from tableB b LEFT JOIN tableA a ON st_within(a.geom,b.geom) group by b.id
et je me retrouve avec seulement 1960 objets , alors que j'en attends 19 000 dont 4000 avec une valeur de dates non nulle.
Dernière modification par neskuik01 (Fri 08 October 2021 16:24)
Hors ligne
#2 Fri 08 October 2021 16:24
- Ben22
- Participant actif
- Lieu: 33
- Date d'inscription: 11 May 2016
- Messages: 96
Re: jointure sur predicat geométrique
Bonjour,
Personnellement, je décomposerai avec une sous requête :
Code:
WITH hello AS (SELECT b.id, max(a.date) as max_date FROM b JOIN a ON st_within(a.the_geom, b.the_geom) GROUP BY b.id) -- uniquement les valeur datemax pour chaque b en contenant SELECT b.id, hello.max_date FROM b LEFT JOIN hello ON b.id = hello.id -- je les joint aux autres valeurs b
En espérant avoir bien saisi le résultat que vous attendiez...
Bien à vous
Hors ligne
#3 Fri 08 October 2021 16:35
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 199
Re: jointure sur predicat geométrique
Bonjour,
Personnellement, je décomposerai avec une sous requête :Code:
WITH hello AS (SELECT b.id, max(a.date) as max_date FROM b JOIN a ON st_within(a.the_geom, b.the_geom) GROUP BY b.id) -- uniquement les valeur datemax pour chaque b en contenant SELECT b.id, hello.max_date FROM b LEFT JOIN hello ON b.id = hello.id -- je les joint aux autres valeurs bEn espérant avoir bien saisi le résultat que vous attendiez...
Bien à vous
Parfait !
Hors ligne