Question SQL

Djo -  
 rasta67 -
Bonjour,

J'ai une tâche à faire et je me demande comment faire ^^.
En effet je possède 2 tables sous Access :

FACTURE (Num_Fact, Date_fact...)
DETAIL_FACTURE ( Num_Det, montant, Num_Fact...)

Le lien ce fait par FACTURE.Num_Fact = DETAIL_FACTURE.Num_Fact. Jusqu'ici rien de compliqué.

Le problème est que je dois prévoir la migration de ces 2 tables dans un ERP que l'entreprise va acheté. En me penchant sur les données stockées dans les tables je me suis aperçu que les numéros de facture (Num_Fact) était assez spéciaux (ex : F1234, F1234_2, I234..). Or, dans le futur ERP les numéros sont du type int. J'ai donc rajouté un champs ID_Fact dans la table Facture en NuméroAUto, ceci afin qu'il m'auto-complète sans doublons le champs ID.

Il faut donc maintenant que je rajoute un champs ID_Facture dans ma table DETAIL_FACTURE pour faire le lien avec ID_Facture. Le problème c'est qu'il faut je complète cette colonne en fonction des Num_Fact, de manière a avoir la même concordance des champs ID_Fact et Num_Fact dans les 2 tables.

Ainsi à la fin le lien se fera par : FACTURE.ID_fact = DETAIL_FACTURE.ID_fact.

Quelles sont les solutions qui s'ouvre a moi sachant que je ne suis pas un grand développeur. Est-ce faisable avec une requête sql ?

Merci par avance
A voir également:

7 réponses

rasta67
 
salut,
oui fais un auto increment pour une des deux tables,
ensuite tu crées colonne int pour la 2ème, fais un update de la 2ème table
update 2éme table set table2.ID=table1.ID where table2.Num_Fact=table1.Num_Fact

je suis pas expert en sql mais ça devrait aller
0
Djo
 
ça a pas l'air de marcher :
update DETAIL set DETAIL.ID_FACT=FACTURE.ID_FACT where DETAIL.NUM_FACT=FACTURE.NUM_FACT;

Access me renvoie la fenêtre de type : Entrez une valeur de paramètre : FACTURE.ID_FACT. J'ai vérifieé tout les champs, et les tables.
0
rasta67
 
et ça :

update DETAIL D set ID_FACT=(SELECT FACTURE.ID_FACT where D.NUM_FACT=FACTURE.NUM_FACT);
0
Djo
 
Toujours un problème :
update DETAIL set ID_FACT= (SELECT FACTURE.ID_FACT FROM FACTURE, DETAIL where DETAIL.NUM_FACT=FACTURE.NUM_FACT);

Il me dit : L'opération doit utiliser une requête qui peut être mise à jour.

Il nous tient tête lol !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rasta67
 
update DETAIL set ID_FACT= (SELECT FACTURE.ID_FACT FROM FACTURE) WHERE DETAIL.NUM_FACT=FACTURE.NUM_FACT;
0
Djo
 
Ne marche pas sous Access, j'ai migré la table sur SQl SERVER et réessayé avec la même requête, fonctionne nickel.

Merci ;)
0
rasta67
 
ok tant mieux... pas mieux que sql server
0