Message posté par : Kiecane
----------------------------------------
Bonjour,
Je dois réaliser une insertion de données de mes tables format shapefile dans une base de
données et je rencontre certaines difficultés. Je tiens par ailleurs à préciser que je
suis novice dans le domaine.
Ces tables .shp sont structurées de manière identique (il y a une table par année) et leur
contenu doit majoritairement être intégré à trois tables distinctes de la base de données
qui constituent les trois tables principales de cette dernière. Je suis partie du principe
qu’il fallait réaliser les insertions table par table dans la bdd et shape par shape. Ce
qui me pose problème, c’est l’insertion des champs des tables attributaires de mes .shp
qui correspondent à des fk (clés étrangères) dans ma base de données. Autrement dit, dans
une table .shp, je vais avoir des champs qui correspondent à une clé étrangère dans la
table cible dans laquelle je souhaite insérer mes données. Malheureusement j’ai beaucoup
de mal à construire un code pour obtenir le résultat attendu. J’ai conçu un code avec la
structure suivante :
INSERT INTO table_cible
(
champ1_tc,
champ2_tc,
champ3_tc,
fk_champ4_tc,
insertion
)
SELECT
champ1_shp
champ2_shp,
champ3_shp,
probleme,
'ajout'
FROM couche_shp
C’est au niveau de "problème" ci-dessus que je rencontre une difficulté : j’ai
pensé à faire une double jointure mais cela ne fonctionne pas. Voici la double jointure
que j’ai créée :
WITH jointure AS (
SELECT *
FROM couche_shp
INNER JOIN table_dico
ON couche_shp.culture=table_dico.culture
)
SELECT *
FROM table_cible
INNER JOIN jointure
ON num_parcelle = jointure.num_parcelle
WHERE insertion = 'ajout'
sachant que sur la table issue du dernier SELECT * ci-dessus, je souhaite obtenir l’entier
associé au type de culture c’est-à-dire id_culture qui est présent dans cette table et qui
provient de table_dico (table de type dictionnaire). Il manque donc une ligne de plus,
soit :
SELECT id_culture FROM table_issue_du_dernier_select
mais je ne peux pas enchaîner deux WITH à la suite car cela me crée une erreur.
Pourriez-vous m’indiquer la structure du code me permettant de répondre à cette
problématique s’il-vous-plaît ? N'hésitez pas à m'indiquer si je dois vous
apporter plus de précisions, sachant que par soucis de confidentialité je ne pourrais pas
le faire de manière trop détaillée.
Cordialement.
----------------------------------------
Le message est situé
https://georezo.net/forum/viewtopic.php?pid=358946#p358946
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net