IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Gestion de plusieurs tables relationnelles


Sujet :

Langage SQL

  1. #1
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Par défaut Gestion de plusieurs tables relationnelles

    Bonsoir à tous les membres. Cela fait plaisir de retrouver la communauté après une longue absence.
    Voici ma préocupation.
    Je dispose de 05 tables à savoir:
    1. Les agents
    2. Les grades
    3. Les Formations
    4. Les promotions au grade
    5. Les affectations dans les formations.


    Parmi mes règles de gestion, les plus importantes sont:
    1. Un agent peut faire l'objet d'un ou de plusieurs promotions au grade par le biais d'un texte de promotion
    2. ce dernier peut être affecté dans une ou plusieurs formation toujours par le biais d'un texte de mutation.


    Problème: Aidez-moi à trouver la requête SQL qui me permettrait d'obtenir à la fois toutes les informations récente sur un agent (cad son grade et sa formation actuels)
    Je joins le schéma de mon analyse (fichier excel).
    Merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Quelle est la structure des tables ?

    Rappel : Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Par défaut Gestion de plusieurs tables relationnelles

    Bonjour. Apparement vous n'avez pas reçu ma pièce jointe. Néanmoins voici la structure:

    1. Agents(MatriculeSolde, Noms, Prenoms, DateNaissance, DateEmbauche......)
    2. Grades(CodeGrade, LibelleGrade,Categorie, AgeLimiteService)
    3. Formations(CodeFormation, LibelleFormation, PC)
    4. Promotion_Grade(ID_Promo, MatriculeSolde, CodeGrade,Acte_Reference, DatePromotion)
    5. Affectation_Agents(ID_Affectation, MatriculeSolde, CodeFormation, Acte_Reference, DateAffectation)


    J'espere que ça suffira. Je suis très impatient de vous lire très bientot.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 30
    Par défaut
    Bonjour,
    vite fait comme ça, vu ta structure je dirai qu'une simple jointure entre tes tables devrait faire l'affaire.

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Par exemple, pour identifier la dernière promotion de chaque agent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT  prm.ID_Promo
        ,   prm.MatriculeSolde
        ,   prm.CodeGrade
        ,   prm.Acte_Reference
        ,   prm.DatePromotion
    FROM    Promotion_Grade AS prm
    WHERE   EXISTS
            (   SELECT  1
                FROM    Promotion_Grade AS lst
                WHERE   prm.MatriculeSolde = lst.MatriculeSolde
                GROUP BY lst.MatriculeSolde --  Cette ligne n'est pas indispensable
                HAVING  MAX(lst.DatePromotion) = prm.DatePromotion
            )
    Il ne reste plus qu'à généraliser et faire les jointures qui vont bien
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Par défaut Gestion des tables relaionnelles

    Merci du coup de pouce. Je me mets immédiatement au boulot et je vous tiens informé. Encore merci.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 15
    Par défaut Gestion de plusieurs tables relationnelles

    Bonjour. J'ai essayé la requête et ce dont j'ai oublié de préciser c'est le fait que j'utilise windev et de plus l'appli que je développe est de structure Client/serveur. Aussi lorsque j'execute la requête, j'ai une erreur d'initialisation de la requête et je souhaiterai savoir s'il subsiste des incompatibilité avec l'architecture client /serveur.
    Toutefois, en me creusant un peu les meninges, j'ai obtenu la requête cidessous qui ne marche que:
    1. Lorsque je passe le Matricule en paramètre
    2. et
    que j'emploi l'expression BOTTOM (dernier enregistrement de la table).
    Que me manque t-il pour me passer du Paramètre et du BOTTOM?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    SELECT BOTTOM 1
    	Agents.IDAgents AS Identifiant,
    	Agents.MatriculeSolde AS MatriculeSolde,	
    	Agents.MatriculeIncorporation AS MatriculeIncorporation,	
    	Agents.NomsAgent AS NomsAgent,	
    	Agents.Prenoms AS Prenoms,	
    	Agents.NomJF AS NomJF,	
    	Agents.DateNais AS DateNais,	
    	Agents.DateEmb AS DateEmb,	
    	Agents.LieuNais AS LieuNais,
    	Agents.CodeRegion AS RegionNaissance,
    	Region.LibelleRegion AS LibelleRegion,	
    	Agents.Photo AS Photo,
     
    	Affectation_Agents.MatriculeSolde AS MatriculeSolde_Af,	
    	Affectation_Agents.CodeFormation AS CodeFormation,	
    	Affectation_Agents.Reference_Acte AS Reference_Acte,	
    	Affectation_Agents.CodeService AS CodeService,	
    	MAX(Affectation_Agents.DateAffect) AS DateAffect,
     
    	DiplomationCivile_Agents.MatriculeSolde AS MatriculeSolde_Di,	
    	DiplomationCivile_Agents.CodeDiplome_Civil AS CodeDiplome_Civil,	
    	MAX(DiplomationCivile_Agents.DateDiplomation) AS DateDiplomation,	
     
    	DiplomationMilitaire_Agents.MatriculeSolde AS MatriculeSolde_Di1,	
    	DiplomationMilitaire_Agents.CodeDiplome_Militaire AS CodeDiplome_Militaire,	
    	DiplomationMilitaire_Agents.CodeSpecialite AS CodeSpecialite,	
    	MAX(DiplomationMilitaire_Agents.DateObtention) AS DateObtention,	
     
    	Diplome_Civil.CodeDiplome_Civil AS CodeDiplome_Civil_Di,	
    	Diplome_Civil.LibelleDiplome_Civil AS LibelleDiplome_Civil,	
     
    	Diplome_Militaire.CodeDiplome_Militaire AS CodeDiplome_Militaire_Di,	
    	Diplome_Militaire.LibelleDiplome_Militaire AS LibelleDiplome_Militaire,	
     
    	Formations.CodeFormation AS CodeFormation_Fo,	
    	Formations.LibelleFormation AS LibelleFormation,	
     
    	Grades.CodeGrade AS CodeGrade,	
    	Grades.LibelleGrade AS LibelleGrade,
    	Grades.AgeService,
     
    	Mutation_agents.MatriculeSolde AS MatriculeSolde_Mu,	
    	Mutation_agents.CodePosition AS CodePosition,	
    	Mutation_agents.Reference_Acte AS Reference_Acte_Mu,
    	MAX(Mutation_agents.DateMutation) AS DateMutation,	
     
    	Positions.CodePosition AS CodePosition_Po,	
    	Positions.LibellePosition AS LibellePosition,
    	Positions.StatutActivite,	
     
    	Promotion_Agents.MatriculeSolde AS MatriculeSolde_Pr,	
    	Promotion_Agents.CodeGrade AS CodeGrade_Pr,	
    	Promotion_Agents.Reference_Acte AS Reference_Acte_Pr,
    	MAX(Promotion_Agents.DatePromo) AS DatePromo,	
     
    	Situation_Matrimoniale.CodeSituation AS CodeSituation_Si,	
    	Situation_Matrimoniale.libelleSituation AS libelleSituation,	
     
    	Sexe.CodeSexe AS CodeSexe_Se,	
    	Sexe.LibelleSexe AS LibelleSexe,	
     
    	Services.CodeService AS CodeService_Se,	
    	Services.LibelleService AS LibelleService,	
     
    	Specialites.CodeSpecialite AS CodeSpecialite_Sp,	
    	Specialites.LibelleSpecialite AS LibelleSpecialite,	
     
    	Titre.CodeTitre AS CodeTitre_Ti,	
    	Titre.LibelleTitre AS LibelleTitre
    FROM 
    	Agents,	
    	Affectation_Agents,	
    	DiplomationCivile_Agents,	
    	DiplomationMilitaire_Agents,	
    	Diplome_Civil,	
    	Diplome_Militaire,	
    	Formations,	
    	Grades,	
    	Mutation_agents,	
    	Positions,	
    	Promotion_Agents,	
    	Situation_Matrimoniale,	
    	Sexe,	
    	Services,	
    	Specialites,	
    	Titre,
    	region
     
    WHERE
    		agents.CodeSexe=sexe.CodeSexe
    	AND
    		agents.CodeSituation=Situation_Matrimoniale.CodeSituation
    	AND
    		Agents.CodeTitre=titre.CodeTitre
    	AND
    		agents.MatriculeSolde=Affectation_Agents.MatriculeSolde
    	AND
    		Affectation_Agents.CodeFormation=Formations.CodeFormation
    	AND
    		Affectation_Agents.CodeService=Services.CodeService
    	AND
    		Agents.MatriculeSolde=DiplomationCivile_Agents.MatriculeSolde
    	AND
    		DiplomationCivile_Agents.CodeDiplome_Civil=Diplome_Civil.CodeDiplome_Civil
    	AND
    		Agents.MatriculeSolde=DiplomationMilitaire_Agents.MatriculeSolde
    	AND
    		DiplomationMilitaire_Agents.CodeDiplome_Militaire=Diplome_Militaire.CodeDiplome_Militaire
    	AND
    		DiplomationMilitaire_Agents.CodeSpecialite=Specialites.CodeSpecialite
    	AND
    		agents.MatriculeSolde=Promotion_Agents.MatriculeSolde
    	AND
    		Promotion_Agents.CodeGrade=Grades.CodeGrade
    	AND
    		Agents.MatriculeSolde=Mutation_agents.MatriculeSolde
    	AND
    		Mutation_agents.CodePosition=Positions.CodePosition
    	AND
    		Agents.CodeRegion=Region.CodeRegion
    	AND
    		Agents.MatriculeSolde={pMatricule}
     
    	GROUP BY
    		Agents.IDAgents,
    		Agents.MatriculeSolde,	
    		Agents.MatriculeIncorporation,	
    		Agents.NomsAgent,	
    		Agents.Prenoms,	
    		Agents.NomJF,	
    		Agents.DateNais,	
    		Agents.DateEmb,	
    		Agents.LieuNais,	
    		Agents.CodeRegion,
    		Agents.Photo,	
     
    		LibelleRegion,
    		Affectation_Agents.MatriculeSolde,	
    		Affectation_Agents.CodeFormation,	
    		Affectation_Agents.Reference_Acte,	
    		Affectation_Agents.CodeService,	
     
    		DiplomationCivile_Agents.MatriculeSolde,	
    		DiplomationCivile_Agents.CodeDiplome_Civil,	
     
    		DiplomationMilitaire_Agents.MatriculeSolde,	
    		DiplomationMilitaire_Agents.CodeDiplome_Militaire,	
    		DiplomationMilitaire_Agents.CodeSpecialite,	
     
     
    		Diplome_Civil.CodeDiplome_Civil,	
    		Diplome_Civil.LibelleDiplome_Civil,	
     
    		Diplome_Militaire.CodeDiplome_Militaire,	
    		Diplome_Militaire.LibelleDiplome_Militaire,	
     
    		Formations.CodeFormation,	
    		Formations.LibelleFormation,	
     
    		Grades.CodeGrade,	
    		Grades.LibelleGrade,
    		Grades.AgeService,
     
    		Mutation_agents.MatriculeSolde,	
    		Mutation_agents.CodePosition,
    		Reference_Acte_Mu,
     
    		Positions.CodePosition,	
    		Positions.LibellePosition,
    		Positions.StatutActivite,
     
    		Promotion_Agents.MatriculeSolde,	
    		Promotion_Agents.CodeGrade,	
    		Reference_Acte_Pr,
     
    		Situation_Matrimoniale.CodeSituation,	
    		Situation_Matrimoniale.libelleSituation,	
     
    		Sexe.CodeSexe,	
    		Sexe.LibelleSexe,	
     
    		Services.CodeService,	
    		Services.LibelleService,	
     
    		Specialites.CodeSpecialite,	
    		Specialites.LibelleSpecialite,	
     
    		Titre.CodeTitre,	
    		Titre.LibelleTitre
     
    	ORDER BY
    		Agents.NomsAgent ASC,
    		Agents.Prenoms ASC,
    		Positions.StatutActivite  ASC,
    		Positions.LibellePosition ASC
    Très prochainement.

Discussions similaires

  1. [AC-2003] Problème de gestion de mon modèle relationnelle et mes tables
    Par rezolinux dans le forum Modélisation
    Réponses: 21
    Dernier message: 25/03/2013, 21h05
  2. Réponses: 3
    Dernier message: 28/12/2011, 08h58
  3. Réponses: 0
    Dernier message: 15/11/2009, 19h46
  4. Gestion de plusieurs tables
    Par slugdoom dans le forum Dynamique
    Réponses: 1
    Dernier message: 24/09/2007, 09h35
  5. Réponses: 4
    Dernier message: 07/08/2007, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo