#1 Tue 07 March 2023 16:39
- Kiecane
- Participant actif
- Date d'inscription: 31 Oct 2021
- Messages: 91
insertion clés étrangères et shape
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.
Hors ligne