Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 14h53   #1
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Par défaut Operation must use an updatable query Problem

Bonjour a tous,

J’ai les 3 tables suivantes T, T1 et T2.
Je veux Update les champs T.ST1 et T.ST2 par les champs T1.CV1 et T2.CV2 respectivement.

T
RecordID CC ST1 ST2 ST3
1 1 0 0 0
2 2 0 0 0
3 3 0 0 0
4 4 0 0 0
5 5 0 0 0


T1
CC1 CV1
1 5
2 7
3 8


T2
CC2 CV2
2 13
4 17
5 19



C'est-à-dire que finallement, je dois aboutir a la table suivante
T
RecordID CC ST1 ST2 ST3
1 1 5 0 0
2 2 7 13 0
3 3 8 0 0
4 4 0 17 0
5 5 0 19 0







Pour l’instant,j’utilise le SQL suivant mais j’obtiens l’erreur
Code :
Operation must use an updatable query


Code :
1
2
3
4
5
6
7
8
UPDATE   T
SET    T.ST1 = (SELECT CV1 
	FROM T1 
	WHERE  T.cc = T1.cc1)  ,
 
          T.ST2 =  (SELECT CV2
	FROM T2
	WHERE  T.cc = T2.cc2)

Merci de me dire ce qui ne va pas et me donner un coup de main.
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 15h50   #2
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 263
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 263
Points : 309
Points : 309
Bjr

Code :
UPDATE (T LEFT JOIN T1 ON T.RecordID = T1.CC1) LEFT JOIN T2 ON T.RecordID = T2.CC2 SET T.ST1 = [T1].[CV1], T.ST2 = [T2].[CV2]
ou si tu veux les 0 dans ta table :

Code :
UPDATE (T LEFT JOIN T1 ON T.RecordID = T1.CC1) LEFT JOIN T2 ON T.RecordID = T2.CC2 SET T.ST1 = IIf(IsNull([T1].[CV1]),0,[T1].[CV1]), T.ST2 = IIf(IsNull([T2].[CV2]),0,[T2].[CV2])

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/02/2012, 16h39   #3
Membre du Club
 
bonero pross
Inscription : janvier 2010
Messages : 160
Détails du profil
Informations personnelles :
Nom : bonero pross

Informations forums :
Inscription : janvier 2010
Messages : 160
Points : 58
Points : 58
Merci pour ta reponse,
Peux-tu m’expliquer pourquoi mon ecriture ne marche pas ?
La logique est quand meme correcte !!!
Existe il des BD (par exemple Tsql , oracle,..) dans lesquelles mon ecriture marcherait ?

Qu’en est il de l’ecriture suivante si j’ignore la table T2 ; Ici je ne prends en compte que les tables T et T1:
Ceci ressemble fort a une requete auto-corelee.

Code :
1
2
3
4
5
UPDATE   T
SET    T.ST1 = (SELECT CV1 
	FROM T1 
	WHERE  T.cc = T1.cc1)  
WHERE T.cc = T1.cc1
Bonero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 16h41   #4
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 263
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 263
Points : 309
Points : 309
Sais pas ... mais autant prendre la requête qui fonctionne.
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h08.


 
 
 
 
Partenaires

Hébergement Web