banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oubliĂ© ?

#1 Fri 08 October 2021 16:04

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 203

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: 97

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: 203

Re: jointure sur predicat geométrique

Ben22 a écrit:

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


Parfait smile !

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo