#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
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