Annonce
Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).
En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.
#1 Fri 08 October 2021 16:04
- neskuik01
- Participant assidu
- Date d'inscription: 16 Feb 2015
- Messages: 193
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: 95
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: 193
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