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