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

7 réponses

  1. 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
  2. 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
  3. rasta67
     
    et ça :

    update DETAIL D set ID_FACT=(SELECT FACTURE.ID_FACT where D.NUM_FACT=FACTURE.NUM_FACT);
    0
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rasta67
     
    update DETAIL set ID_FACT= (SELECT FACTURE.ID_FACT FROM FACTURE) WHERE DETAIL.NUM_FACT=FACTURE.NUM_FACT;
    0
  7. 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
  8. rasta67
     
    ok tant mieux... pas mieux que sql server
    0