#1 Fri 27 July 2012 09:01
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
requête SQL sur fichiers DGI
Bonjour,
URGENT
je suis graphiste sur GEOMAP GIS et je connais un peu FME. Je n'ai jamais fait de requête SQL mais le service Informatique interne peut m'aider .
En l'absence du geomaticien habituel, le service Urbanisme de ma ville me demande d'extraire un fichier Xls des données cadastrales (DGI , wGeoPC).
- En fonction d'une section x, rechercher les adresses et noms des propriétaires de Bâtiments qui ont la catégorie 6,7,8 (classification de qualité )
Si vous avez déjà fait ce genre de requête, es-ce techniquement réalisable par une novice ??? si oui alors je cherche aussi les "traductions " des noms de tables (ou puis-je les trouver ?) pour mieux comprendre le langage...
Merci pour votre aide
Christine
Hors ligne
#2 Fri 27 July 2012 16:52
- simo lay
- Participant assidu
- Date d'inscription: 8 Dec 2011
- Messages: 172
Re: requête SQL sur fichiers DGI
Bonjour,
est ce que tes bases DGI sont spatiales si oui une requête d'intersection entre la couche des sections et la couches des parcelles(avec les propriétaires) suffit, si non il faut se baser sur la table des propriétaires et tu fais une sélection sur la référence de parcelle qui contient la section
Dernière modification par simo lay (Fri 27 July 2012 17:04)
Hors ligne
#3 Mon 30 July 2012 12:15
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
Re: requête SQL sur fichiers DGI
Bonjour,
Oui, elles sont spatiales, pourquoi?
Christine GUILLARD
Hors ligne
#4 Mon 30 July 2012 14:09
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: requête SQL sur fichiers DGI
Bonjour,
Le problème c'est aussi que ne connaissant pas le modèle MAJIC utilisé par vos services, il est difficile de vous donner le chemin à emprunter pour créer votre requête SQL.
Quelques pistes peuvent être trouvée sur le blog parcellair de Georezo (ici : http://georezo.net/blog/)
En attendant :
Code:
/* Sous réserve d'utiliser une base Oracle */ SELECT LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0') AS "Section Cadastrale", MJ2_BATI.DNVOIRI AS "Numéro de voirie du logement", MJ2_BATI.DVOILIB AS "Libellé de voie du logement", D.CCOAFF, D.DCAPEC AS "Catégorie", D.DCETLC AS "Coeff d'entretien", --COUNT (D.INVAR) AS "NB LOGEMENT", MJ2_BATI.CCOCOM || '000' || LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0') || LPAD (MJ2_BATI.DNUPLA, 4, 0) AS CODE_PARC, MJ2_LOCAL.JANNAT AS "Année de construction", CASE WHEN MJ2_LOCAL.JANNAT BETWEEN 1949 AND 1974 THEN '1949 - 1974' WHEN MJ2_LOCAL.JANNAT BETWEEN 1975 AND 1989 THEN '1975 - 1989' WHEN MJ2_LOCAL.JANNAT BETWEEN 1990 AND 2003 THEN '1990 - 2003' WHEN MJ2_LOCAL.JANNAT > 2003 THEN 'post 2003' ELSE 'avant 1949' END AS GROUPE_DATE, MJ2_LOCAL.CCONLC AS "Nature du local", MJ2_LOCAL.DNATLC, CASE MJ2_LOCAL.DNATLC WHEN 'D' THEN 'Domicile principal occupé par le propriétaire' WHEN 'L' THEN 'Loué' WHEN 'P' THEN 'Occupé par le propriétaire' WHEN 'V' THEN 'Vacant' ELSE DNATLC END AS OCCUPATION_MJ3, DECODE (MJ2_PROPRIO.DNATPR, 'ECF', 'ECONOMIQUEMENT FAIBLE (NON SERVI)', 'FNL', 'FONCTIONNAIRE LOGE', 'DOM', 'PROPRIETAIRE OCCUPANT DOM', 'HLM', 'OFFICE HLM', 'SEM', 'SOCIETE D ECONOMIE MIXTE', 'TGV', 'SNCF', 'RFF', 'RESEAU FERRE DE FRANCE', 'CLL', 'COLLECTIVITE LOCALE', 'CAA', 'CAISSE ASSURANCE AGRICOLE', '') AS "Nature de la personne", CASE WHEN MJ2_PROPRIO.CCOGRM = '0 ' THEN 'Personne Physique' ELSE 'Personne Morale' END AS "type de propriétaire", MJ2_PROPRIO.CCOGRM AS "code personne morale", DECODE (TRIM (MJ2_PROPRIO.CCOGRM), 0, 'PERSONNES MORALES NON REMARQUABLES', 1, 'ETAT', 2, 'REGION', 3, 'DEPARTEMENT', 4, 'COMMUNE', 5, 'OFFICE HLM', 6, 'PERSONNES MORALES REPRESENTANT DES SOCIETES', 7, 'COPROPRIETAIRE', 8, 'ASSOCIE', 9, 'ETABLISSEMENTS PUBLICS OU ARGANISMES ASSIMILES', '') AS "Type de personne morale", CASE TRIM (MJ2_PROPRIO.GTOPER) WHEN '1' THEN CASE TRIM (BOTH FROM MJ2_PROPRIO.DQUALP) WHEN 'M' THEN 'M.' ELSE TRIM (BOTH FROM MJ2_PROPRIO.DQUALP) END || ' ' || REGEXP_SUBSTR (MJ2_PROPRIO.DDENOM1, '([A-Z]*)', 1) || ' ' || REGEXP_SUBSTR (MJ2_PROPRIO.DDENOM1, '[^\/]+', 1, 2) ELSE MJ2_PROPRIO.DDENOM1 END AS "Propriétaire" FROM MJ2_DESCPEV D /*La table de description de la partie évaluation suffisante pour les données bâti*/ INNER JOIN ( ( MJ2_BATI /*La table du bâti*/ INNER JOIN MJ2_LOCAL /*La table des locaux décrits*/ ON MJ2_BATI.INVAR = MJ2_LOCAL.INVAR) INNER JOIN MJ2_PROPRIO /*La table des propriétaires*/ ON ( MJ2_LOCAL.DNUPRO = MJ2_PROPRIO.DNUPRO AND MJ2_BATI.CCOCOM = MJ2_PROPRIO.CCOCOM)) ON (D.INVAR = MJ2_BATI.INVAR) WHERE DNUPEV = 001 AND D.CCOAFF = 'H' /*Contrainte pour ne s'occuper que de l'habitat*/ AND MJ2_PROPRIO.DNULP = 01 /*Contrainte sur le numéro d'ordre du propriétaire*/ AND REGEXP_SUBSTR (D.DCAPEC, '^((6)|(7)|(8))') IS NOT NULL /*Contrainte sur les catégories de logement*/ GROUP BY D.CCOAFF, D.DCAPEC, D.DCETLC, MJ2_BATI.CCOCOM || '000' || LPAD (LTRIM (MJ2_BATI.CCOSEC), 2, '0') || LPAD (MJ2_BATI.DNUPLA, 4, 0), MJ2_LOCAL.JANNAT, -- MJ2_LOCAL.JDATAT, MJ2_LOCAL.CCONLC, MJ2_LOCAL.GPDL, MJ2_LOCAL.DNATLC, CASE MJ2_LOCAL.DNATLC WHEN 'D' THEN 'Domicile principal occupé par le propriétaire' WHEN 'L' THEN 'Loué' WHEN 'P' THEN 'Occupé par le propriétaire' WHEN 'V' THEN 'Vacant' ELSE DNATLC END, CASE WHEN MJ2_PROPRIO.CCOGRM = '0 ' THEN '1' ELSE MJ2_PROPRIO.GTOPER END, MJ2_PROPRIO.DNATPR, MJ2_PROPRIO.CCOGRM, MJ2_PROPRIO.DQUALP, MJ2_PROPRIO.GTOPER, MJ2_PROPRIO.DDENOM1, MJ2_BATI.DNVOIRI, MJ2_BATI.DVOILIB;
Voilà, en espérant que cela vous sera utile.
Cordialement
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#5 Mon 30 July 2012 14:09
- VianneyD
- Participant assidu
- Date d'inscription: 30 May 2011
- Messages: 153
Re: requête SQL sur fichiers DGI
Bonjour,
Je ne connais pas la structuration de vos données, mais si elles sont identiques à celles des fichiers de la DGFIP, le mieux selon moi est de faire une jointure sémantique sur le compte communal, du type :
Code:
SELECT prop.ddenom, prop.dlign3, prop.dlign4, prop.dlign5, prop.dlign6 FROM bati, prop WHERE prop.ccocom LIKE bati.ccocom AND prop.dnupro LIKE bati.dnupro AND bati.ccocom LIKE '001' AND bati.ccosec LIKE 'XX'
Si vous l'exécutez dans votre SGBD, vous récupèrerez pour chaque propriété bâtie de la section XX de la commune '001' : le propriétaire et son adresse. Vous aurez normalement la possibilité de les exporter en csv et ainsi les visualiser sous Excel.
La nomenclature des champs (ici nommés tels quels) est délivrée par la DGFIP en même temps que les fichiers fonciers.
Sans garantie bien sûr, la requête est à adapter selon vos données.
En espérant que cela aidera.
Dernière modification par VianneyD (Mon 30 July 2012 14:12)
Vianney Dugrain
Hors ligne
#6 Mon 30 July 2012 14:41
Re: requête SQL sur fichiers DGI
Bonjour Vianney,
Quelle est l'utilité d'utiliser des LIKe pour les jointures sans le symbol % ?
Pour moi cela revient à utiliser le symbol = sans pouvoir utiliser d'index.
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#7 Mon 30 July 2012 14:55
- VianneyD
- Participant assidu
- Date d'inscription: 30 May 2011
- Messages: 153
Re: requête SQL sur fichiers DGI
Bonjour,
C'est juste une (mauvaise !) habitude que j'ai prise d'utiliser des LIKE pour comparer des caractères.
Le = est beaucoup plus approprié ici, il est vrai.
Vianney Dugrain
Hors ligne
#8 Mon 30 July 2012 16:26
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
Re: requête SQL sur fichiers DGI
Merci à vous tous pour votre aide.
Voici ce que ma collègue informaticienne m'a sorti comme données.
J'oserai encore abuser de votre collaboration pour vous demander comment peut-on faire pour exporter sur un tableau XLS (sans passer par copier/coller)
Bonne fin de journée
Christine GUILLARD
Hors ligne
#9 Mon 30 July 2012 16:32
Re: requête SQL sur fichiers DGI
Bonjour,
Quelque chose comme cela (pour postgreSQL) :
Code:
CREATE TABLE TEMP AS SELECT ...
Sous Oracle cela devrait fonctionner sans le "TEMP" qui permet de créer une table temporaire (qui sera effacer lors de la déconnexion).
Dans un deuxième temps un COPY INTO file permet de sauver le contenu de la requête au format CSV.
Les pro d'Oracle donneront les requêtes équivalentes
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#10 Mon 30 July 2012 16:42
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: requête SQL sur fichiers DGI
SQLDevelopper sait très bien faire ça tout seul à mon avis. Genre clic droit sur le résultat.
Sinon,
Code:
Spool c:\monnomdefichier.csv <la requête> Spool off
Mais bon c'est capital de savoir ça pour faire du Oracle. ^^
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#11 Tue 31 July 2012 09:30
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
Re: requête SQL sur fichiers DGI
Merci
Christine GUILLARD
Hors ligne
#12 Wed 01 August 2012 16:58
Re: requête SQL sur fichiers DGI
Christine
Attention cependant à l'utilisation du critère "DCAPEC" car il n'est pas tenu à jour, de + il est normal qu'apparaissent beaucoup de logements HLM puisque ceux ci sont automatiquement comptabilisés dans certaines catégories et aussi pour les logements financés avec des prêts aidés je crois.
Il serait bon d'approfondir la question de savoir ce qu'est exactement le demande ? si c'est un indicateur pour une copro par exemple il est intéressant d'extraire la part du locatif et des vacants, ...
Par ailleurs dans mes fichiers j'ai trouvé aussi des classifications 6M, 7M, ... je ne sais pas si ça a un sens particulier mais il faut peut-être en tenir compte dans la requête ?
AlineC
Hors ligne
#13 Thu 02 August 2012 09:14
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
Re: requête SQL sur fichiers DGI
Aline
Merci pour l'info mais J'ai fournis ce fichier au service Urba et cela semble leur convenir...
Dans quel "critère" aurais-je du trouver ces qualifications (catégories) ?
Bonne fin de soirée
Christine GUILLARD
Hors ligne
#14 Thu 02 August 2012 09:30
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: requête SQL sur fichiers DGI
Bonjour,
En faisant :
REGEXP_SUBSTR (D.DCAPEC, '^((6)|(7)|(8))') IS NOT NULL
Cela permet d'avoir les valeurs 6,7,8 de CAPEC mais aussi 6M, 7M, 8M.
Cordialement,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#15 Thu 02 August 2012 13:45
- Christine Guillard
- Participant occasionnel
- Date d'inscription: 25 Jul 2012
- Messages: 17
Re: requête SQL sur fichiers DGI
Bonjour
Merci beaucoup pour cet info, nous allons vérifier sur notre base
Bonne journée
Christine GUILLARD
Hors ligne