#1 Wed 06 March 2024 16:14
- ladymaga
- Juste Inscrit !
- Date d'inscription: 10 Feb 2022
- Messages: 6
QGIS 3.28: Jointure attributaire sur champ calcule
Bonjour,
Je démarre sur Qgis et donc tâtonne encore sur des choses certainement très simples (et pour lesquelles je n'ai pas trouvé de réponse avec la loupe).
Voilà mon souci:
j'ai une couche ponctuelle avec de nombreux attributs (table 1), et une couche surfacique avec simplement un id et un nom d'entité (table 2).
je souhaite faire une jointure attributaire, jusque là tout va bien, mais pour ramener un champ calculé (en fait une concaténation de plusieurs champs de ma table 1) dans ma table 2. Et là........... ben rien du tout! il ne se passe rien! (alors que si je ramène par la même jointure un autre champ tout se passe bien)
Les champs de départ et d'arrivée ont la même config (string longueur 250), les champs clé doivent correspondre puisque j'arrive à rapatrier n'importe quel autre champ que ma chaine concaténée.
Pouvez-vous m'éclairer? c'est certainement très bête, mais je bloque ^^
Merci à vous.
Hors ligne
#2 Thu 07 March 2024 10:22
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 3.28: Jointure attributaire sur champ calcule
Bonjour,
en fait une concaténation de plusieurs champs de ma table 1
C'est un champ qui existe déjà dans table1? calculé en dur (et sauvegardé dans la table déjà), ou virtuel?
Les champs de départ et d'arrivée ont la même config (string longueur 250),
De quels champs vous parlez? A part les champs clés qui doivent correspondre, il n'y a aucun besoin d'avoir autre chose qui corresponde, puisque l'idée est de rapatrier les champs de l'une à côté de ceux de l'autre.
Hors ligne
#3 Thu 07 March 2024 13:18
- ladymaga
- Juste Inscrit !
- Date d'inscription: 10 Feb 2022
- Messages: 6
Re: QGIS 3.28: Jointure attributaire sur champ calcule
Bonjour SANTANNA,
Et merci de me répondre.
C'est un champ qui existe déjà dans table1? calculé en dur (et sauvegardé dans la table déjà), ou virtuel?
Oui, c'est un champ créé et enregistré dans table1, et qui concatène plusieurs autres champs de cette même table.
De quels champs vous parlez? A part les champs clés qui doivent correspondre, il n'y a aucun besoin d'avoir autre chose qui corresponde, puisque l'idée est de rapatrier les champs de l'une à côté de ceux de l'autre.
Effectivement, je parle bien des deux champs (champ clé) , qui font correspondre les deux tables attributaires entre elles, je ne me soucie pas du format des autres champs. Ces deux champs, donc, ont bien le même format. Je ne comprends donc pas pourquoi je ne peux pas effectuer ma jointure attributaire.
Hors ligne
#4 Thu 07 March 2024 15:05
- LPlante
- Participant occasionnel
- Date d'inscription: 17 Nov 2021
- Messages: 44
Re: QGIS 3.28: Jointure attributaire sur champ calcule
Bonjour,
Un bout de code sur la jointure pourrait nous aider à y voir plus clair!
Petite note si vous utilisez la fonction aggregate de ce type
AGGREGATE(
layer:='table1', aggregate:='concat', expression:="champs1"||"champs2"||"champs3" , filter:= id= attribute(@parent, 'id')
)
Si je dis pas de bétise, si l'un des champs1/2 ou 3 est null, toute la concatenation des champs renverra null
Utilisez plutot expression:=CONCAT("champs1","champs2","champs3") ou un replace
Hors ligne
#5 Fri 08 March 2024 11:11
- ladymaga
- Juste Inscrit !
- Date d'inscription: 10 Feb 2022
- Messages: 6
Re: QGIS 3.28: Jointure attributaire sur champ calcule
Bonjour
Un bout de code sur la jointure pourrait nous aider à y voir plus clair!
je n'utilise pas de code, comme dit plus haut je débute dans Qgis, donc pour le moment je me contente des fonctions de base, en l'occurrence la fonction Jointures des propriétés de la couche . Je vais essayer de mettre une capture d'écran de ce que j'ai fait, sachant que si je coche n'importe quel autre champ de la partie "champs joints", le champ coché est bien rapatrié.
Utilisez plutot expression:=CONCAT("champs1","champs2","champs3")
c'est bien cette fonction que j'utilise pour calculer mon champ:concat( "Culture" ,' / ', "Producteur", ' / ',"Variété",' / ', "Surface se" ,' / ', "Date de se" ,' / ', "Technicien" ), et il se calcule correctement
Hors ligne