Bonjour,
je possède une table T1(idT1(pk),champ2T1,champ3T1)
Voici un exemple de son contenu
et une table T2(idT2(pk),champ2T2,champ3T2,champ4T2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1, 0, 0 2, 564, 24 3, 0, 0
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1, , , , 2, , , , 3, , , ,
Les champs idT2 et idT1 sont identiques.
Les champs "champ2T2" et "champ3T2" et "champ4T2" de la table T2 sont vides.
L'idée serait de remplir ces champs en fonction des valeurs de champ2T1 et champ3T1 (donc de la table T1). Je voudrais obtenir quelque chose dans le style "si champ2T1+champ3T1 de T1 = 0, alors on écrit 'bonjour' dans "champ2T2" de T2". Soit ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 1, 'bonjour', , , 2, , , 3, 'bonjour', , ,
Pour celà il faut très certainement effectuer une jointure entre la table T2 et T1, mais je ne vois pas comment faire ici.
Voyez ce que je souhaiterai faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 UPDATE T2 SET champ2T2= CASE WHEN T1.champ2T1+T1.champ3T1=0 INNER JOIN T2 ON T1.idT1=T2.idT2 THEN 'bonjour' . . . etc.. END;
Bien entendu je pourrais très bien copier les champ2T1 et champ3T1 de ma table T1 dans la table T2, et effectuer directement les traitements vu que toutes les valeurs seraient maintenant dans T2, mais je ne pense pas que ça soit très propre (la table T1 contient plusieurs millions d'enregistrements, je me retrouverai avec autant de données dans T2, ce qui serait certainement lourd )..
Merci beaucoup
EDIT : Je viens de tester cette méthode, mais j'obtiens "erreur à la ligne 1, ORA-01722: invalid number"
Donc ici ça devrait me calculer champ2T1+champ3T1 et me mettre le résultat ('bonjour') dans un champ_calculé (donc le champ2T2 de T2), puis me mettre le champ3T1 de T1 tel quel dans le champ3T2 de T2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 INSERT INTO T2(champ2T2,champ3T2) SELECT (CASE WHEN champ2T1+champ3T1=0 THEN 'Bonjour' END)as champ_calculé, champ3T1 FROM T1;
Mais rien n'y fait
Merci à vous
Partager