Précédent   Forum du club des développeurs et IT Pro > Bases de données > Autres SGBD > Informix
Informix Forum d'entraide Informix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 20/07/2012, 14h03   #1
dirtymusli
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Par défaut Modifier les valeurs d'une colonne avec conditions (Permutation?)

Bonjour!

Voici mon problème:

Je dois effectuer un update sur la BDD de mon entreprise dont le secteur d'activité est l'imprimerie.

Le SGBD est Informix d'IBM.

La table en question concerne les bobines imprimées que nous stockons.

Dans les enregistrements des bobines imprimées on trouve les colonnes suivantes:

-Numéro de référence de la bobine
-Numéro d'ordre de fabrication (OF)
-Numéro de version de l'OF
-Quantité produites
-Code d'emplacement dans le stock
-Etat (1 = Bon pour client | Q = Quarantaine - attente de retraitement)



Le champ qui m’intéresse au niveau de l'UPDATE est l'emplacement de stock:

Je dois remplacer tous les emplacements de stock des bobines en quarantaine (Q) par les emplacement des bobines Bonnes pour client (1). Sachant que je dois effectuer cette opération sur les enregistrements ayant le même OF, même référence et même version... Seul l'état diffère.

Voici ma requête à l'heure actuelle:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
   UPDATE bobines A, bobines B
 
SET A.emplacement = B.emplacement 
 
WHERE A.OF = B.OF 
 
 AND  A.reference = B.reference
 
 AND  A.version = B.version
 
 AND  A.etat = 'Q'
 
 AND  B.etat = '1'

Bien évidemment la requête ne fonctionne pas...

Quelqu'un aurait des pistes pour m'éclairer ?

Merci d'avance!
dirtymusli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2012, 15h57   #2
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 868
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 868
Points : 11 725
Points : 11 725
En SQL standard (je ne connais pas les particularités d'Informix)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
UPDATE  bobines A
SET     A.emplacement = (   SELECT  B.emplacement 
                            FROM    bobines B
                            WHERE   B.etat  = '1'
                                AND A.OF    = B.OF 
                                AND A.reference = B.reference
                                AND A.version   = B.version
                         )
WHERE   A.etat = 'Q'
    AND EXISTS
        (   SELECT  1 
            FROM    bobines B
            WHERE   B.etat  = '1'
                AND A.OF    = B.OF 
                AND A.reference = B.reference
                AND A.version   = B.version
         )
;
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises
[code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2012, 16h41   #3
dirtymusli
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
merci beaucoup pour la réponse rapide!

Malheureusement la requête ne fonctionne pas sous informix.

j'ai pourtant épluché un peu la doc (pas en entier non plus ) et je n'ai rien trouvé de particuliers. Pourtant le SGBD me renvoie toujours une erreur de type syntaxe.

La requête que j'ai posté plus haut fonctionne quand j'importe la table sous access. Les modifications prennent effet.

Pareil pour celle que vous m'avez proposé.

je suis a court d'idées
dirtymusli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2012, 14h19   #4
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 868
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 868
Points : 11 725
Points : 11 725
C'est pourtant du SQL tout ce qu'il y a de générique et conforme à la norme

Regarde dans ta doc s'il n'existe pas une variante sous forme de UPDATE ... FROM (non conforme à la norme) ou si la commande MERGE est prise en charge.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises
[code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2012, 18h33   #5
nelem75
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 32
Points : 39
Points : 39
Bonjour,

La commande MERGE fonctionne avec Informix.

-------------------------
MERGE statement

[...]
The MERGE statement supports the ANSI/ISO standard for SQL with Informix® extensions.
[...]
------------------------- Source:
http://publib.boulder.ibm.com/infoce...s_sqs_2030.htm


Hope this help.
nelem75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2012, 15h35   #6
dirtymusli
Invité de passage
 
Homme
Étudiant
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Bonjour!

A l'heure actuelle je n'ai pas vraiment résolu le problème.

Pas vraiment car : j'ai toujours l'erreur de syntaxe de la part de l'ODBC, cependant il semblerait que les valeurs aient été mises à jour (la encore pas de la manière souhaitée..).

On m'a confié d'autres travaux pour le moment, mais le problème est toujours en suspend.

J'ai bien pris en compte vos conseils et je vous en remercie!

Je vais continuer d'effectuer des test quand le temps me le permettra.
dirtymusli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2012, 20h29   #7
begooden-it
Membre habitué
 
Homme Eric Vercelletto
Achitecte Informix SGBD et applications
Inscription : octobre 2010
Messages : 79
Détails du profil
Informations personnelles :
Nom : Homme Eric Vercelletto
Âge : 52
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : Achitecte Informix SGBD et applications
Secteur : Conseil

Informations forums :
Inscription : octobre 2010
Messages : 79
Points : 126
Points : 126
bonsoir,


quelle est la version du moteur Informix, et ton ODBC est-il en phase avec la version d'Informix?

Les jointures n'existent pas pour UPDATE avec Informix . Si tu passais le schéma de tes 2 tables, ça permettrait surtout de tester :-)
begooden-it est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 18h55.


 
 
 
 
Partenaires

Hébergement Web