#1 Thu 13 September 2018 16:49
- Sylvain PIERRE
- Participant assidu
- Lieu: Strasbourg
- Date d'inscription: 6 Sep 2005
- Messages: 170
QGIS 2.18: DB Manager sql WITH clause inopérante
Bonjour,
J'avais déjà été confronté au problème, mais du coup écris mes requêtes plus classiquement.
Je reviens dessus, car la clause WITH permet vraiment de bien découper les requêtes complexes.
Mes données sont dans un fichier gpkg. Une table pour le parcellaire, une table pour les propriétaires.
Le problème : ma requête s’exécute correctement et affiche le résultat attendu dans le gestionnaire, là ou ça se complique c’est lorsque je veux charger le résultat en tant que nouvelle couche : ce n’est plus du tout le bon contenu qui est chargé mais la table de mes parcelles cadastrales de départ !
La requête, même si ça n'apporte pas grand chose vu qu'elle fonctionne:
Code:
WITH foncier as(SELECT p.dnupro, CASE WHEN p.dlign6 in ('67440 THAL-MARMOUTIER', '67700 HAEGEN','67440 MARMOUTIER','67440 REINHARDSMUNSTER') THEN 'Thal et environs' WHEN p.dlign6 like '67%' THEN 'Bas-Rhin' ELSE 'Hors département' END AS situation, Count(p.idu) cpt_pro, p.idu FROM proprietaires p GROUP BY p.dnupro, situation, idu), p_t as( SELECT DISTINCT f1.dnupro, f2.situation, f1.idu FROM foncier f1 JOIN foncier f2 ON f1.dnupro = f2.dnupro WHERE f2.situation = 'Thal et environs'), p_d as( SELECT DISTINCT f1.dnupro, f2.situation, f1.idu FROM foncier f1 JOIN foncier f2 ON f1.dnupro = f2.dnupro WHERE f2.situation = 'Bas-Rhin'), p_h as( SELECT distinct f1.dnupro, f2.situation, f1.idu FROM foncier f1 JOIN foncier f2 ON f1.dnupro = f2.dnupro WHERE f2.situation = 'Hors département'), p_d_t as ( SELECT * FROM p_t UNION SELECT * from p_d WHERE not exists (SELECT 1 FROM p_t WHERE p_t.dnupro = p_d.dnupro)) SELECT * FROM p_d_t UNION SELECT * FROM p_h WHERE not exists (SELECT 1 FROM p_d_t WHERE p_d_t.dnupro = p_h.dnupro)
Ca pourrait être plus simple, mais le gestionnaire ne prends pas en compte les OUTER JOIN...
Si personne n'a d'idées je vais la réécrire en mode classique, mais ça fait un peu c...
Sylvain
Dernière modification par Sylvain PIERRE (Thu 13 September 2018 17:06)
Hors ligne
#2 Fri 14 September 2018 10:57
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3940
Re: QGIS 2.18: DB Manager sql WITH clause inopérante
Bonjour,
Et en ajoutant un champ integer autoincrémenté (qui servirait de clé primaire) à la table en sortie?
Hors ligne