Bonjour à tous,

Je viens vers vous car j'ai un problème dans ma requête que je n'arrive pas à résoudre même via internet.

Je réalise une table temporaire (bm_fme), qui récupère les données d'un CSV (cela fonctionne bien).
Puis j'essais d'update certains champs de ma table cible (bm_test) a partir de la table temporaire et donc du CSV.

Seulement, j'ai une sous requête qui renvois plusieurs lignes (tous les code_insee) qui me sont nécessaire afin de mettre à jour les bons champs en comparant les code_insee de la table et du csv.

Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
UPDATE amenagement.bm_test
SET (nom,adresse,cp,ville,ouverture,mail,site_web,secteur,regime_juridique,type_de_bm,tel,fax,reseaux,mediatheque,_version_)=
(
 (SELECT nom FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT adresse FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT cp FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT ville FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT ouverture FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT mail FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT site_web FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT secteur FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT regime_juridique FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT type_de_bm FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT tel FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT fax FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT reseaux FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT mediatheque FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee),
 (SELECT _version_ FROM amenagement.bm_fme WHERE bm_test.code_insee= bm_fme.code_insee)
 )
where  bm_test.code_insee IN(SELECT bm_test.code_insee FROM amenagement.bm_fme,bm_test WHERE bm_test.code_insee= bm_fme.code_insee);
Je pense que l’erreur vient de la dernière condition ( le WHERE qui retourne plusieurs lignes) car lorsque je rentre un code_insee en dur la modification se réalise.

Une aide/ piste/ point de vue différent serait le bienvenu,
Je vous remercie d'avance.