#1 Thu 13 September 2018 16:49
- Sylvain PIERRE
- Participant assidu
- Lieu: Strasbourg
- Date d'inscription: 6 Sep 2005
- Messages: 171
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: 4134
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


