Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

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 Mon 10 January 2022 18:05

audreytaviaux
Participant occasionnel
Date d'inscription: 12 Jul 2012
Messages: 30

QGIS/Postgresql: Id unique dans vue avec union

Bonjour,

J'ai réalisé une vue dans postgresql afin de réaliser l'union de deux couches de lignes.

La requête fonctionne, le résultat est visible dans PG (attributs et géométrie) mais pas dans qgis car apparemment il faudrait un ID unique dans le résultat de la vue pour une utilisation dans qgis. J'ai donc ajouté un row_number mais le comptage se fait sur chaque table avant l'union...


Code:

CREATE OR REPLACE VIEW schema.vueglobale 

SELECT 
ROW_NUMBER() OVER () AS num,
colonnea,
colonneb,
colonnec,
geom AS geom
from  schema.couchea 

UNION 

SELECT 
ROW_NUMBER() OVER () AS num,
colonnea,
colonneb,
colonnec,
geom AS geom
from schema.coucheb

Pouvez-vous m'indiquer comment créer un identifiant unique dans le résultat d'une vue qui contient une union ?

Merci !

Dernière modification par audreytaviaux (Wed 12 January 2022 14:13)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Mon 10 January 2022 18:39

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3789

Re: QGIS/Postgresql: Id unique dans vue avec union

Bonjour,
LE row_num devrait être calculé sur la couche résultant de la fusion. Essayez donc

Code:

SELECT 
ROW_NUMBER() OVER () AS num,
c.colonnea,
c.colonneb,
c.colonnec,
c.geom AS geom
from 
(select
colonnea,
colonneb,
colonnec,
geom AS geom
from  schema.couchea 

UNION 

SELECT 
colonnea,
colonneb,
colonnec,
geom AS geom
from schema.coucheb) c

Hors ligne

 

#3 Tue 11 January 2022 09:25

audreytaviaux
Participant occasionnel
Date d'inscription: 12 Jul 2012
Messages: 30

Re: QGIS/Postgresql: Id unique dans vue avec union

Merci beaucoup, j'ai pu afficher la vue dans qgis avec ce numéro unique.

Hors ligne

 

#4 Wed 12 January 2022 14:18

audreytaviaux
Participant occasionnel
Date d'inscription: 12 Jul 2012
Messages: 30

Re: QGIS/Postgresql: Id unique dans vue avec union

Bonjour, il semble que qgis détecte le champs issu du row_number comme du qlonglong https://georezo.net/forum/attachment.php?item=9400 et non de l'integer. Dans PQadmin je vois que le champs est dans le format biginteger. Est-il possible, dans le vue, de forcer le format du champ issu du row_number en integer?

Dernière modification par audreytaviaux (Wed 12 January 2022 14:19)

Hors ligne

 

#5 Thu 13 January 2022 09:29

bbk9
Participant occasionnel
Date d'inscription: 7 Jan 2022
Messages: 13

Re: QGIS/Postgresql: Id unique dans vue avec union

Tu peux essayer de faire ton champ num comme ça :

(ROW_NUMBER() OVER ())::integer AS num

Hors ligne

 

Pied de page des forums

Powered by FluxBB