Conception que j arrive pas à modeliser (jointures externes inside) - SQL/NoSQL - Programmation
Marsh Posté le 24-02-2009 à 10:06:22
en gros, t'essayes de faire un diff entre 2 tables puis de les synchroniser avec les données les plus récentes.
Je pense qu'en requêtes SQL ça va être trop compliqué. Je me souviens, je voulais juste faire un diff entre 2 objets stockés en bases, ces objets se présentant sous la forme d'arborescences de composants et d'attributs et MagicBuzz m'avait conseillé de le faire en script php (l'appli reposait sur Mysql et PHP).
Tu es sous quel SGBD et quel langage de programmation. Si t'es sous un sgbd qui gère bien les procédures stockées, tu peux peut-être le faire comme ça, sinon avec le langage de programmation, ça sera sans doute plus performant qu'une ignoble et énorme requête SQL (voire plusieurs)...
Marsh Posté le 24-02-2009 à 10:14:14
Voila le topic dont je parlais : http://forum.hardware.fr/hfr/Progr [...] m#t1480707
On n'a jamais réussi à faire un diff en SQL (avec le MCD que j'avais). Je l'ai fait en PHP et ça marche nickel et c'est rapide (je charge juste les 2 confs dans 2 variables php et je les traite.
Marsh Posté le 24-02-2009 à 10:27:05
Justement dans mon cas, j'ai le droit qu'à Oracle mais pas au pl/sql
La conception se fait dans un ETL (datawarehouse) et j'ai donc juste des connecteurs oracles que je peux surcharger avec des requetes
Pour l'instant ou j'ai le plus avancé
Jointure externe avec JM1 is null => j'aurais toutes les nouvelles lignes dans J je recupere les users => DJ
Jointure externe avec J is null => j'aurais toutes les nouvelles lignes dans JM1 je recupere les users => DJM1
DJ - DJM1 => ca devrait me donner les users qui ont étés modifiés que dans J => UJ
DJM1 - DJ => ca devrait me donner les users qui ont étés modifiés que dans JM1 => UJM1
DJ + DJM1 - UJ - UJM1 devrait si je dis pas de betises me donner les utilisateurs qui ont été modifiés dans J et JM1
Marsh Posté le 24-02-2009 à 12:02:26
Mon idée de solution :
Code :
|
Ensuite au vu des résultats je refais des jointures la ou il faut
Marsh Posté le 23-02-2009 à 19:44:56
Bonjour je dois sortir un flux provenant d'un delta entre deux tables.
Je schématise la partie qui me pose problème la.
Deux tables de structures identiques J et JM1
User
Role
Modificateur
Date_Modif
La clé sur User-Role
Maintenant le truc tordu
4 cas possible
Pour un utilisateur donné :
1/ Aucune modification les données dans J et JM1 sont absolument les memes
2/ Des lignes en plus dans J
3/ Des lignes en plus dans JM1
4/ Des lignes en plus dans J et JM1
Cas 1 : On ne fait rien
Cas 2 : On ressort la ligne de J qui a la date_modif la plus recente (l id role ne nous interresse plus)
Cas 3 : On ressort la ligne JM1 qui a la date_modif la plus recente (l id role ne nous interresse plus)
Cas 4 : On ressort la ligne de J ou JM1 qui a la date_modif la plus recente (l id role ne nous interresse plus)
Et en fait j'arrive pas à reconnaitre dans quel cas on est
On aurait jamais le cas 4 avec des requetes externes j'aurais la soluce, mais le cas 4 me pose problème
Pour ressortir la bonne ligne ensuite je pense que je trouverais la solution
Cas concret pour bien expliqué
J
21 1 seb 2009
21 2 marie 2008
20 1 seb 2004
19 1 seb 2005
19 3 marie 2009
10 1 nathan 2006
JM1
21 2 marie 2008
20 1 seb 2004
20 2 luc 2009
19 1 seb 2009
19 2 eric 2007
18 1 nathan 2006
Cas 1 : user 18
Cas 2 : user 21
Cas 3 : user 20
Cas 4 : user 19
Table finale Delta
21 seb 2009
20 luc 2009
19 marie 2009