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

Printemps des cartes 2024

#1 Mon 21 January 2019 20:31

noto63
Juste Inscrit !
Date d'inscription: 21 Jan 2019
Messages: 5

QGIS: colonne auto increment couche virtuelle

Bonjour à tous,

Néophite tant en sql qu'en SIG, j'ai avancé tant que je le pouvais mais maintenant je bute. J'aurais besoin de votre aide.
Je veux joindre les correspondances d'un import CSV à une couche point en évitant les doublons de la couche point et en affichant que les lignes ou il y a une correspondance dans l'import CSV. Je prends uniquement les 15 derniers enregistrements de la table CSV. Concernant c'est conditions je pense les avoir remplies par DB MANAGER grace aux commandes

SELECT DISTINCT "table A"."A1",
"table A"."A2",
"table A"."A3",
"Table B"."B2",
"Table B"."B3",
"Table B"."B4",
"Table A"."A4",
"table A"."A5"
FROM "table A"
INNER JOIN "Table B"
ON "A1"="B1"
WHERE "table A"."A4"  0
ORDER BY "table A"."A2" DESC
LIMIT 15

Maintenant je souhaiterais ajouter une colonne id de 1 à N qui me serviras dans les étiquettes.
De ce que j'ai pu lire  $id ne fonctionne pas sur les couches virtuelles!!!! Existe t'il une solution pour rajouter cette colonne ID de 1 à N ?
Par avance merci.

Hors ligne

 

#2 Tue 22 January 2019 11:14

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

Re: QGIS: colonne auto increment couche virtuelle

Bonjour,

Dans la version spatialite embarquée dans QGIS, apparemment, la fonction row_number() n'a pas été implémentée.

Il y a une solution de contournement utilisant l'expression suivante :

Code:

SELECT 
    * ,
    (SELECT count(*) FROM votre_couche AS b WHERE a.colonne_de_tri >= b.colonne_de_tri ) AS id
FROM votre_couche AS a 
ORDER BY a.colonne_de_tri

votre_couche étant le résultat de la jointure
et colonne_de_tri étant une colonne avec unicité : par exemple, la concaténation des colonnes uniques de vos deux couches. col_unique_table1||-||col_unique_table2

Il y a peut-être une solution plus élégante. J'ai essayé en rajoutant un champ virtuel id=@row_number à une couche virtuelle, mais sans succès..


geodata au cerema et petits billets en géomatique

Hors ligne

 

#3 Tue 26 November 2019 23:53

noto63
Juste Inscrit !
Date d'inscription: 21 Jan 2019
Messages: 5

Re: QGIS: colonne auto increment couche virtuelle

Bonsoir
Je reviens sur le forum après plusieurs mois d’absence. J’ai du mener un autre projet entre temps.
Demain j’essaierai sur mon poste votre proposition .
Merci

Hors ligne

 

#4 Wed 27 November 2019 16:31

noto63
Juste Inscrit !
Date d'inscription: 21 Jan 2019
Messages: 5

Re: QGIS: colonne auto increment couche virtuelle

Bonjour,
J'ai du mal à saisir l'expression proposé.
J'ai bien remplacé "votre_couche" par les 15 ou 20 résultats de ma jointure.
Maintenant je vois que je dois remplacer colonne de tri par une colonne unique mais
a et b qu'est ce que c'est ?
Par avance merci.

Hors ligne

 

#5 Wed 27 November 2019 17:00

noto63
Juste Inscrit !
Date d'inscription: 21 Jan 2019
Messages: 5

Re: QGIS: colonne auto increment couche virtuelle

Le plus simple est encore de montrer ou j'en suis .
Merci

WITH T1 AS (SELECT
"SUIVI"."TYPE",
"MIS"."DH FAITS" AS "DATE",
"MIS"."LIEU COM FAITS" AS "LIEU",
"SUIVI"."CIRCONSTANCES",
"SUIVI"."CONSEQUENCES",
"SUIVI"."RENSEIGNEMENTS",
makepoint ("MIS"."Coordonnée X (lambert) (MIS)", "MIS"."Coordonnée Y (lambert) (MIS)",102110) as geometry
FROM "MIS"
INNER JOIN "SUIVI"
ON "UNA (MIS)"="UPVA"
WHERE "MIS"."Gps X (MIS)" <>0 AND  "SUIVI"."TYPE" IS 'RP' OR "SUIVI"."TYPE" IS 'RS' OR "SUIVI"."TYPE" IS 'VAM%' OR "SUIVI"."TYPE" IS 'LAP' OR "SUIVI"."TYPE" IS 'AL' OR "SUIVI"."TYPE" IS 'AVS' OR "SUIVI"."TYPE" IS 'VV' OR "SUIVI"."TYPE" IS 'DV' OR "SUIVI"."TYPE" IS 'FM' OR "SUIVI"."TYPE" IS 'FCB'
group by "MIS"."UNA (MIS)"
order by "MIS"."Date/Heure de début de commission des faits" desc
limit 20)

SELECT
    * , (SELECT count(*) FROM T1 AS b WHERE a.colonne_de_tri >= b.colonne_de_tri ) AS id
FROM t1 AS a
ORDER BY a.colonne_de_tri

Hors ligne

 

#6 Wed 27 November 2019 17:47

noto63
Juste Inscrit !
Date d'inscription: 21 Jan 2019
Messages: 5

Re: QGIS: colonne auto increment couche virtuelle

En revenant aprés une petite pause, j'ai réussi.

Je note par contre que le calcul semble assez long.

Merci beaucoup.

Hors ligne

 

Pied de page des forums

Powered by FluxBB