Pages: 1
- Sujet précédent - QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL - Sujet suivant
#1 Tue 21 June 2022 16:45
- Guénolé MAINSANT
- Juste Inscrit !
- Date d'inscription: 27 Jan 2021
- Messages: 9
QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL
Bonjour,
j'ai deux shapes: un de bonne géométrie mais avec des champs manquants (A) et un 2eme de mauvaise géométrie mais avec des champs utiles (B).
Ils partagent tous les deux un ID commun mais il y a des entités manquantes sur la 2eme par rapport à la 1ere couche et vis versa.
Donc j'aimerais faire un FULL JOIN
J'ai 2 problèmes sur 2 méthodes différentes
1/ avec la jointure attributaire classique de QGIS, il me fait un INNER JOIN et non un FULL JOIN par défaut, je perds donc les entités de la deuxième couche qui ne sont pas sur la 1ere couche.
Y'a t il une option pour faire passer les jointures en FULL ?
2/ j'essaye donc avec DBmanager et les couches virtuels
------------
SELECT *
FROM A
FULL JOIN B
on A.ID = B.ID
-----------
mess error : Query execution error on CREATE TEMP VIEW _tview AS SELECT * FROM A FULL JOIN B on A.ID = B.ID: 1 - RIGHT and FULL OUTER JOINs are not currently supported
https://zupimages.net/up/22/25/6hy6.png
apparemment, on peut pas non plus, sauf erreur de ma part.
Merci d'avance pour toute aide
Dernière modification par Guénolé MAINSANT (Tue 21 June 2022 16:46)
Hors ligne
#2 Tue 21 June 2022 17:57
- bbk9
- Participant occasionnel
- Date d'inscription: 7 Jan 2022
- Messages: 24
Re: QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL
Bonjour,
si vous pouvez les mettre en bdd, vous pouvez peut-être essayer ça:
1) corriger les geoms de la table B:
with tA as (select id, geom from A)
update B
set B.geom = tA.geom
where B.id = tA.id;
Vous devriez avoir une table B avec tous les bons champs et les bonnes geom (sauf pour celles qui sont dans B mais pas dans A) moins les entités qui sont dans A mais pas dans B.
Il vous reste alors à :
2) récupérer les lignes de A à intégrer à B. Si les champs de A et B sont de même type, même nom et même ordre ça peut ressembler à ça :
create table AB as (
select * from B
union
select * from A
where A.id not in (select id from B)
);
reste alors à corriger ces nouveaux champs issus de A et a priori sans équivalents dans B si j’ai bien compris.
J’espère vous indiquer une bonne piste, bon courage!
Hors ligne
#3 Wed 22 June 2022 13:43
- Guénolé MAINSANT
- Juste Inscrit !
- Date d'inscription: 27 Jan 2021
- Messages: 9
Re: QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL
impossible d'installer un BDD et un client ici. Y'en a t il vraiment besoin ?
Merci quand même, l'info est utile.
Dernière modification par Guénolé MAINSANT (Wed 22 June 2022 13:44)
Hors ligne
#4 Wed 22 June 2022 16:30
- shirosaki
- Participant actif
- Lieu: Lyon
- Date d'inscription: 30 Mar 2018
- Messages: 125
Re: QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL
Bonjour,
j'ai testé de mon coté et effectivement, les FULL joins ne semble pas encore être supportés dans les couches virtuelles, bizarre.
Vous pouvez essayer la méthode suivante cependant,
Lancer l'algo "Joindre les attributs par valeur de champ" (trouvable dans la boite à outils de traitement)
Paramétrer comme ceci :
Couche source : 'A'
Champ de la table : 'ID'
Couche en entrée 2 : 'B'
Champ de la table 2 :'ID'
Couche 2 champs à copier (tous les champs sauf 'ID', si ce dernier est coché il créera un champ 'ID_2', qui n'a pas d'utilité
Type de jointure : prendre uniquement les attributs de la première ...
Préfixe de champ : laisser vide
Couche issus de la jointure : enregistrer votre couche où vous voulez
Entités non joignable à partir de la première couche : enregistrer cette couche <-- par défaut cette sortie est ignorée
ensuite, prenez les entités de la couche "Entités non joignable à partir de la première couche" et copier les dans la couche "Couche issus de la jointure".
Ca devrait être bon et être le résultat d'un full join
Dernière modification par shirosaki (Wed 22 June 2022 16:31)
Paul QUESNOT
Hors ligne
Pages: 1
- Sujet précédent - QGIS/Jointure: Full or Inner ? > jointure attributaire et requete SQL - Sujet suivant