Probleme requete UPDATE
Résolu/Fermé
Sissou1970
Messages postés
23
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
8 mai 2015
-
15 oct. 2013 à 20:50
Utilisateur anonyme - 18 oct. 2013 à 07:48
Utilisateur anonyme - 18 oct. 2013 à 07:48
A voir également:
- Probleme requete UPDATE
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Winget update - Guide
4 réponses
Utilisateur anonyme
16 oct. 2013 à 16:19
16 oct. 2013 à 16:19
salut,
tu mets 'Client1' entre guillemets vu que c'est une chaine, mais pas 'Client2'. Donc soit Client2 est une colonne de ta table, soit c'est un faute ^^.
De même, les parenthèse autour de 'Client1' sont inutiles.
Ensuite, le like ici est inutile aussi car tu recherche la chaine exacte.
Enfin, tu déclare deux fois la même table sans alias donc ca ne fonctionnera pas.
Donc écris plutôt :
J'éspère aussi qu'une ligne client est unique, sinon tu auras une erreur. De ce que j'ai lu, tu aura probablement le cas, donc il faudrai aussi que tu prennes en compte le produit car, à priori, c'est l'association produit/emballage/client qui est unique (mais il faudra que tu le confirme).
Pour ma part j'aurai plutot fais une requête comme celle ci :
naga
UPDATE MaTable
SET Emballage = (SELECT MaTable.Emballage
FROM MaTable
WHERE MaTable.Client LIKE ('Client1'))
WHERE MaTable.Client LIKE Client2
tu mets 'Client1' entre guillemets vu que c'est une chaine, mais pas 'Client2'. Donc soit Client2 est une colonne de ta table, soit c'est un faute ^^.
De même, les parenthèse autour de 'Client1' sont inutiles.
Ensuite, le like ici est inutile aussi car tu recherche la chaine exacte.
Enfin, tu déclare deux fois la même table sans alias donc ca ne fonctionnera pas.
Donc écris plutôt :
UPDATE MaTable
SET Emballage = (SELECT MaTable.Emballage
FROM MaTable T2
WHERE T2.Client = 'Client1')
WHERE MaTable.Client = 'Client2'
J'éspère aussi qu'une ligne client est unique, sinon tu auras une erreur. De ce que j'ai lu, tu aura probablement le cas, donc il faudrai aussi que tu prennes en compte le produit car, à priori, c'est l'association produit/emballage/client qui est unique (mais il faudra que tu le confirme).
Pour ma part j'aurai plutot fais une requête comme celle ci :
UPDATE Matable T1 , MaTable T2
SET T1.Emballage = T2.Emballage
WHERE T1.Client = 'Client1'
and T2.Client = 'Client2'
AND T1.Produit = T2.Produit
naga
Sissou1970
Messages postés
23
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
8 mai 2015
17 oct. 2013 à 16:42
17 oct. 2013 à 16:42
Bonjour,
Merci nagashima pour ta réponse.
Je te remercie également pour l'analyse de ma requête maladroite. J'ai appris le sql sur le tard dans les bouquins et sur les sites et forums d'entraide.
Comme tu l'as compris client2 n'est pas une colonne mais une chaîne. De plus, c'est bien l'association produit/emballage/client qui est unique (un produit peut avoir plusieurs emballages et plusieurs clients associés. Un client peut avoir plusieurs produits et emballages. Un produit peut également avoir plusieurs emballages pour un même client.)
Ce que je cherche , c'est récupérer les valeurs d'un produit pour un client spécifiques (ici client1) et les copier produits par produits sur le client2.
Pour être clair, tout se trouve dans une seule et même table.
Enfin, je ne comprends pas très bien la requête que tu me conseilles.
Sissou
Merci nagashima pour ta réponse.
Je te remercie également pour l'analyse de ma requête maladroite. J'ai appris le sql sur le tard dans les bouquins et sur les sites et forums d'entraide.
Comme tu l'as compris client2 n'est pas une colonne mais une chaîne. De plus, c'est bien l'association produit/emballage/client qui est unique (un produit peut avoir plusieurs emballages et plusieurs clients associés. Un client peut avoir plusieurs produits et emballages. Un produit peut également avoir plusieurs emballages pour un même client.)
Ce que je cherche , c'est récupérer les valeurs d'un produit pour un client spécifiques (ici client1) et les copier produits par produits sur le client2.
Pour être clair, tout se trouve dans une seule et même table.
Enfin, je ne comprends pas très bien la requête que tu me conseilles.
Sissou
salut ,
et bien en fait, dans la requête :
je déclare deux fois la table de manière à mettre à jour un élément de cette table pour elle même.
C'est à dire, si tu fais cette requête ci :
tu récupère le code emballage actuel pour le client1 et le code emballage du client2 que l'on souhaite mettre sur le client1.
Donc, lors de mon 'update', je lui dis simplement que quand un produit du Client1 existe pour le Client 2, on met à jours l'emballage du client 1 pour le client 2.
et bien en fait, dans la requête :
UPDATE Matable T1 , MaTable T2
SET T1.Emballage = T2.Emballage
WHERE T1.Client = 'Client1'
and T2.Client = 'Client2'
AND T1.Produit = T2.Produit
je déclare deux fois la table de manière à mettre à jour un élément de cette table pour elle même.
C'est à dire, si tu fais cette requête ci :
SELECT T1.Emballage as oldemballage, T2.Emballage as newemballage
from Matable T1 , MaTable T2
WHERE T1.Client = 'Client1'
and T2.Client = 'Client2'
AND T1.Produit = T2.Produit
tu récupère le code emballage actuel pour le client1 et le code emballage du client2 que l'on souhaite mettre sur le client1.
Donc, lors de mon 'update', je lui dis simplement que quand un produit du Client1 existe pour le Client 2, on met à jours l'emballage du client 1 pour le client 2.
Sissou1970
Messages postés
23
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
8 mai 2015
17 oct. 2013 à 17:17
17 oct. 2013 à 17:17
Salut,
Si j'ai bien compris :
UPDATE Matable T1, MaTable T2
SET T1.Emballage = T2.Emballage
SET T1.QuantitéDansUnEmballage = T2.QuantiteDansUnEmballage
WHERE T1.Client = 'Client1'
AND T2.Client = 'Client2'
AND T1.Produit = T2.Produit
me permet de mettre à jour 2 colonnes ?
(Produit/Emballage/QuantitéDansUnEmballage/Client)
Si j'ai bien compris :
UPDATE Matable T1, MaTable T2
SET T1.Emballage = T2.Emballage
SET T1.QuantitéDansUnEmballage = T2.QuantiteDansUnEmballage
WHERE T1.Client = 'Client1'
AND T2.Client = 'Client2'
AND T1.Produit = T2.Produit
me permet de mettre à jour 2 colonnes ?
(Produit/Emballage/QuantitéDansUnEmballage/Client)
Sissou1970
Messages postés
23
Date d'inscription
mercredi 10 octobre 2012
Statut
Membre
Dernière intervention
8 mai 2015
17 oct. 2013 à 17:31
17 oct. 2013 à 17:31
Je te remercie,
Je vais essayer cette requête.
Encore merci pour ton aide, tes corrections et tes conseils.
Je marque ce poste comme résolu.
Je vais essayer cette requête.
Encore merci pour ton aide, tes corrections et tes conseils.
Je marque ce poste comme résolu.