Message posté par : T. Rossini
----------------------------------------
De rien.
C'est d'ailleurs un raccourci.
La "vraie" requête est plus dans ce genre là :
-----------------
Code :
SELECT
id, pays
FROM
ma_table
CROSS JOIN LATERAL
regexp_split_to_table(valeur, '\s*,\s*') as pays
;
-----------------
La clause LATERAL demande à Postgresql
d'évaluer l'expression à sa droite pour chaque élément de
la relation gauche de la jointure et d'effectuer
la jointure sur le résultat, (ici, donc tout les éléments
renvoyées par l'expression sont jointes puisqu'on utilise
un CROSS JOIN)
On peut dire qu'il effectue la jointure pour chaque élément
avec une table "virtuelle" dépendant (ou non) de l’élément.
C'est le même principe qu'avec generate_series (ici table "virtuelle"
non dépendante).
-----------------
Code :
CREATE TEMP TABLE foo(bar) AS (SELECT 1 UNION SELECT 2);
SELECT
bar,
i
FROM
foo
CROSS JOIN LATERAL
generate_series(1, 2) i
;
--Renvoie
--1; 1
--1; 2
--2; 1
--2; 2
-----------------
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=325542#p325542
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net