Update d'une table sur conditions dans une autre table - SQL/NoSQL - Programmation
Marsh Posté le 13-03-2009 à 13:10:01
Sauf erreur de ma part, tu peux écrire ce que tu proposes :
UPDATE table1 SET row1 = value1 WHERE ok = IF(condition, ok, nok)
Marsh Posté le 13-03-2009 à 14:05:18
guybrush02 a écrit : Sauf erreur de ma part, tu peux écrire ce que tu proposes : |
Et ou définis-tu l'autre table ?
Si par exemple tu as table1 qui contient row1 à updater et table2 qui contient la condition si row2=1 par ex ?
Marsh Posté le 13-03-2009 à 14:11:00
table2.row2
[Edit : Au pire, si ton SGBD le permet, tu peux toujours effectuer une sous-requête dans la clause WHERE et tester l'absence, la présence ou la valeur du résultat.]
[Edit2 : J'ai relu ton message... je rêve, ou tu as bel et bien dit que la condition était stockée dans la table ? oO]
Marsh Posté le 13-03-2009 à 14:16:09
guybrush02 a écrit : table2.row2 |
J'ai déja essayé ça .. tu es sur que ça passe en sql server ?
Edit : en fait c'est difficile d'expliquer sans donner les valeurs et le reste ...
Voici ce que j'ai en gros :
Table1
Row1 Var1
x1 0
x2 0
x3 1
x4 0
x5 1
Table2
Row1 Var2
x1 15
x2 30
x3 58
x4 20
x5 21
Je voudrais mettre à zéro toutes les valeurs de var2 dont la valeur de var1 est égale à 0 dans la table 1
Donc x3 et x5 devraient se retrouver à 0 dans la table 2.
Marsh Posté le 13-03-2009 à 14:27:09
Normalement, il doit y avoir une relation entre les deux tables, sinon ce n'est plus vraiment du ressort du SQL mais de l'applicatif.
Et s'il y a une relation, il "suffit" de faire un
Code :
|
[Edit]Et faire une seule table Row1 Var1 Var2 ? Parce que là, je ne vois pas trop l'intérêt de 2 tables distinctes !
Marsh Posté le 13-03-2009 à 14:28:15
UPDATE table2 set var2 = 0 where 0=(SELECT var1 from table1 where table1.row1=table2.row1)
macgawel> Pas sûr que ça passe, référencer une relation dans une clause where ne peut normalement pas se faire sans la mentionner dans une quelconque forme de FROM.
Marsh Posté le 13-03-2009 à 14:31:16
guybrush02 a écrit : UPDATE table2 set var2 = 0 where 0=(SELECT var1 from table1 where table1.row1=table2.row1) |
J'ai testé :
Code :
|
devrait fonctionner...
Marsh Posté le 13-03-2009 à 14:50:40
macgawel a écrit : Normalement, il doit y avoir une relation entre les deux tables, sinon ce n'est plus vraiment du ressort du SQL mais de l'applicatif.
|
Merci ! en fait j'ai vachement simplifié .. il n'y a pas que ces données dans les tables.
Marsh Posté le 13-03-2009 à 12:02:56
Bonjour,
Voila le topo, je suis sur sql server et je dois mettre à jour une chiée de lignes en regardant le status dans une autre table.
N'y aurait-il pas un moyen de faire une requête qui va chercher la condition dans une autre table ?
Genre : Update telle ligne si telle ligne = x dans table 2
Sorry, je suis une quille en SQL
J'espere que c'est compréhensible
Merci !
---------------
Syno NAS DS216Play