C'est vrai que c'est un peu bizarre mais c'est comme ça que les gars de microsoft disent de faire :
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/40e63302-0c68-4593-af3e-6d190181fee7.htm
Du coup moi je dis Amen du moment que ça marche![]()
C'est vrai que c'est un peu bizarre mais c'est comme ça que les gars de microsoft disent de faire :
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/tsqlref9/html/40e63302-0c68-4593-af3e-6d190181fee7.htm
Du coup moi je dis Amen du moment que ça marche![]()
Ca marche toujours pas ...
Sinon je me demandais. Peut etre que je pourrais passer par une page php pour executer ma requête. Je retourne la requete select qui marche bien dans une variable et apres je fais un update sur le résultat? Ca pourrait marcher?
Tu aurais pas 2 tables "AMOModelVariant" dans ta base?
une "dbo" et une autre avec ton login?
Y'a un erreur dans ta requete, la table a un Alias mais tu ne t'en sert pas.
Gwendoline, dans ton UPDATE fait un UPDATE "alias" au lieu de UPDATE AMOMODELVariant, ou "alias" correspont a l'alias que tu a donné a la table dans ta requete, au moins pour etre sur que le UPDATE est executer sur al bonne table
J'ai éssayé ca!
Ca marche toujours pas et en plus ya écrit (2 rows affected)! Je ne sais absolument pas quelle est la deuxième colonne changée. Par contre toujours pareil pour la colone en question elle est intégralement changée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UPDATE MV SET MV.AMOModelVariant_name = 'AC' FROM AMOModelVariant AS MV JOIN AMOModel AS M ON M.AMOModel_id=MV.AMOModel_id JOIN ItemParents AS IP ON IP.Parent_id=MV.AMOModelVariant_id JOIN ItemDelivery AS ID ON ID.Item_id=IP.Item_id JOIN Delivery AS DEL ON DEL.Delivery_id=ID.Delivery_id WHERE M.AMOModel_name='HLS' AND DEL.Delivery_name LIKE 'HLS_AC%' AND IP.ParentType_id=11
bon...
Lance cette requête :
puis sauve le résultat dans un fichier Excel ou XML (ou ce que tu veux) sans oublier les en-têtes de colonnes et poste-le ici.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT * FROM AMOModelVariant AMV JOIN AMOModel AMM ON AMM.AMOModel_id = AMV.AMOModel_id JOIN ItemParents IP ON IP.Parent_id = AMV.AMOModelVariant_id JOIN Item I ON I.Item_id = IP.Item_id JOIN ItemDelivery ID ON ID.Item_id = I.Item_id JOIN Delivery D ON D.Delivery_id = ID.Delivery_id WHERE AMM.Program_id = 2 AND IP.ParentType_id = 11 AND AMM.AMOModel_name = 'HLS' AND D.Delivery_name LIKE 'HLS_AC%'
Si en plus tu peux nous mettre un screen ou une liste des tables de ta BD, ça peut aussi aider.
Effectivement il manque un filtre dans la requête que je t'ai envoyé :
ça devrait aller mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 UPDATE MV SET AMOModelVariant.AMOModelVariant_name = 'AC' FROM AMOModelVariant AS MV JOIN AMOModel AS M ON M.AMOModel_id=MV.AMOModel_id JOIN ItemParents AS IP ON IP.Parent_id=MV.AMOModelVariant_id JOIN ItemDelivery AS ID ON ID.Item_id=IP.Item_id JOIN Delivery AS DEL ON DEL.Delivery_id=ID.Delivery_id WHERE MV.AMOModel_name='HLS' AND DEL.Delivery_name LIKE 'HLS_AC%' AND IP.ParentType_id=11 AND M.Program_id = 2
Sinon 2 rows affected ça veut dire 2 lignes affectées pas 2 colonnes (Je sais pas si c'est une faute de frappe de ta part?)
Essai de rafraichir ta base pour voir les modifications ou ferme et réouvre la fenêtre où tu vois les lignes de ta table sinon tu vois pas les modifications. Ca m'étonnerait qu'il te dise 2 rows affected et qu'il modifie toute la colonne de la table à moins qu'il y ait que 2 lignes dans ta table
Bon courage
Sacha,
Pour l'alias effectivement dans un select tu es obligé de l'utiliser partout mais apparament dans un update avec cette syntaxe c'est pas le cas.
J'ai essayé ces 2 requêtes et le 2 marches aussi bien l'une que l'autre. En tous cas pas la table que tu mets à jour.
et :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 UPDATE ST SET Fax='00000000' FROM dbo.eServices_Store AS ST JOIN dbo.eServices_UsersInStore AS UIST ON UIST.StoreId=ST.StoreId JOIN dbo.aspnet_Users AS US ON US.UserId=UIST.UserId WHERE US.UserName='022276'
Par contre je sais pas si il y en a un qui est mieux que l'autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 UPDATE dbo.eServices_Store SET Fax='00000000' FROM dbo.eServices_Store AS ST JOIN dbo.eServices_UsersInStore AS UIST ON UIST.StoreId=ST.StoreId JOIN dbo.aspnet_Users AS US ON US.UserId=UIST.UserId WHERE US.UserName='022276'
Ah ok désolé, je suis etonné pour la 2eme requete, faudra que je teste de les propres yeux quand je serai au taff![]()
Bonjour,
Après plusieurs semaines de réflexion, je suis revenu sur ce problème pour constater que j'avais fait une erreur. En effet je n'ai pas défini le nom du modelvariant 'AC' dans la base de donnée. Maintenant que ceci est ajouté la requête fonctionne mieux mais me retourne cette fois un autre message d'erreur.
"Cannot update identity column"
En effet j'essai de changer l'id de la colone. Or d'après ce message c'est impossible. Ya-t-il donc un moyen de dupliquer la ligne en question puis de supprimer l'ancienne ligne? Ou de contourner ce problème?
Merci d'avance pour vos réponses!
La requête que j'ai utilisé et qui m'a retournée le message d'erreur est la suivante:
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 UPDATE AMOModelVariant SET AMOModelVariant_id = 566 WHERE AMOModelVariant_id IN ( SELECT AMOModelVariant.AMOModelVariant_id FROM AMOModelVariant JOIN AMOModel ON AMOModel.AMOModel_id = AMOModelVariant.AMOModel_id JOIN ItemParents ItemParents ON ItemParents.Parent_id = AMOModelVariant.AMOModelVariant_id JOIN Item ON Item.Item_id = ItemParents.Item_id JOIN ItemDelivery ON ItemDelivery.Item_id = Item.Item_id JOIN Delivery ON Delivery.Delivery_id = ItemDelivery.Delivery_id WHERE AMOModel.Program_id = 2 AND ItemParents.ParentType_id = 11 AND AMOModel.AMOModel_name = 'HLS' AND Delivery.Delivery_name LIKE 'HLS_AC%' )
Ça y'est après 3 mois, j'ai enfin trouvé une solution à mon problème.
Je ne pouvais pas updaté ma table car j'essayais de mettre à jour une clé primaire qui était utilisé par deux autres tables de ma base de données.
A la place j'ai donc modifié les deux autres tables qui utilisaient cet identifiant.
Et voila le tour est joué!
Merci tout de même pour votre aide, elle m'aura permit de simplifier grandement mes requêtes sql!
![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager