Question SQL

Fermé
Djo - 10 avril 2008 à 10:54
 rasta67 - 10 avril 2008 à 15:21
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

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
ç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
et ça :

update DETAIL D set ID_FACT=(SELECT FACTURE.ID_FACT where D.NUM_FACT=FACTURE.NUM_FACT);
0
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
update DETAIL set ID_FACT= (SELECT FACTURE.ID_FACT FROM FACTURE) WHERE DETAIL.NUM_FACT=FACTURE.NUM_FACT;
0
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
ok tant mieux... pas mieux que sql server
0