Différentes valeurs pour un même code

Résolu
Signaler
Messages postés
6
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
10 février 2009
-
Messages postés
6
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
10 février 2009
-
Bonjour,

Je travailles actuellement sur un projet de migration (de base à base) et j'écris donc les procédures stockées qui permettront d'aller chercher les données d'une base pour les insérer dans la nouvelle.
Voici mon soucis :

J'ai tout d'abord une table "Famille" créée correctement ayant pour clé primaire un CodFamille (et tout plein d'autres informations inutiles pour mon problème)
Je dois remplir une table "Coefficient", voici sa représentation au niveau MLD :
Coefficient (CodFamilleCOE, CodMoisCOE, ...........)
Je dois donc pour la remplir, récupérer chaque code famille de ma table famille (pour cela aucun soucis) et insérer pour chaque code famille des valeurs de 1 à 12

Un petit exemple :
Table Famille :
CodFamille | Lib
111            |  Fam1
112            |  Fam2
Table Coefficient :
CodFamilleCOE | CodMoisCOE
111                     |       1
111                     |       2
....                       |       ...
111                     |       12
112                     |        1
Et ainsi de suite.

Donc voila je bloque pour insérer ces 12 codes mois pour chaque code de famille
J'espère avoir été clair
Merci.

PS : Je travaille sous SQL Server Enterprise Manager

3 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
37
Salut

Utilises un curseur pour remplir la table coefficient

mais si pour chaque code famille tu as les 12 mois
il semble avoir un probleme de modelisation de ta base de données
Messages postés
6
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
10 février 2009

J'ai donc bien réussi à faire ce que je voulais grâce à un curseur,
Merci beaucoup.
J'espère que l'idée plaira à mon tuteur de stage.
Pour ceux à qui ça peut poser problème voici un extrait de mon code pour l'utilisation du curseur :

CREATE TABLE #TMPCoefs (CodFamilleCOETMP nchar(3), CodMoisTMP nchar(2),
                ValCOETMP decimal (8,2), LibCOETMP varchar(32))

    DECLARE @i int        
    DECLARE @Mois nchar(3)        -- Numero du mois du mois
    DECLARE @Famille nchar(3)    -- Numéro de la famille

    -- Déclaration du curseur
    DECLARE ListFam CURSOR FOR
        SELECT     CodFamille
        FROM    FAMILLE

    -- Ouverture du curseur
    OPEN ListFAM

    -- On se place sur le premier enregistrement
    FETCH ListFam INTO @Famille

    -- Parcours des résultats de la requête
    WHILE (@@FETCH_STATUS = 0)
    BEGIN
        SET @i = 1

        WHILE (@i <= 12)
        BEGIN
            SET @Mois = @i
            INSERT INTO #TMPCoefs (CodFamilleCOETMP, CodMoisTMP)
                VALUES    (@Famille, @Mois)
       
            SET @i = @i + 1
        END

            -- On récupère l'enregistrement suivant
        FETCH ListFam INTO @Famille
    END

    -- Fermeture du curseur
    CLOSE ListFam
    -- Libération de l'espace0
    DEALLOCATE ListFam

Voila, je travailles avec des tables temporaire donc après il y à l'ajout de cette table (#TMPCoefs) dans une table réelle. Il y a un peu de bidouillage entre la variable i et la variable mois... pour des histoires de conversions de type ça m'a paru un peu plus simple.

Bonne journée, et merci de l'aide Nhervagault [auteur/NHERVAGAULT/84425.aspx ]
Messages postés
6
Date d'inscription
mardi 3 février 2009
Statut
Membre
Dernière intervention
10 février 2009

Salut,

Tout d'abord merci pour ta réponse !
L'idée du curseur ne m'étais pas venue à l'esprit.. c'est vrai que ce n'est pas une mauvaise idée je vais essayer ça aujourd'hui... Je te dirais si j'ai réussi.

Sinon pour ce qui concerne la modélisation de la base, elle n'est pas que moi
Je suis en fait qu'un simple stagiaire (en BTS) à qui on a donné un projet de migration.. donc tout est préparer je dois remplir les bases..

Donc même si ça ne convient pas tout à fait.. je n'ai pas le choix !