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

Modélisation Discussion :

Relation de deux enregistrements dans la même table


Sujet :

Modélisation

  1. #1
    Futur Membre du Club Avatar de Eleve-bdd
    Homme Profil pro
    Conseiller
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Conseiller

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Relation de deux enregistrements dans la même table
    Bonjour à tous,

    Tout d'abord je pense que c'est un problème qui vient d'une logique Access pour laquelle je dois être étanche

    Voici ma problématique:
    Des clients souscrivent des contrats de placement pour lesquels ils font des versements.
    Chaque client ouvre un ou plusieurs contrats et fait un ou plusieurs versements sur chaque contrat.
    J'ai donc une table_client, une table_placement et une table_versement.

    Là où je me fais des nœuds au cerveau c'est que deux clients différent peuvent être en couple et que j'aimerais pouvoir les lier pour voir les placements pour le couple et non pas par client.

    Dans la table_client lors d'un enregistrement client, je pensais mettre une liste déroulante qui sélectionne l'id d'un autre client (pour les couples il y aurait donc un enregistrement client par personne => un Monsieur et un Madame par exemple). la relation serait de un à un je pense.

    Mais comment faire cela ? Et comment par la suite afficher dans une requête les placements du couple (donc sur deux ID clients qui serait liés) ?

    Merci d'avance à ceux qui pourraient m'éclairer.

  2. #2
    Membre émérite Avatar de vttman
    Homme Profil pro
    Développeur "couteau mosellan"
    Inscrit en
    Décembre 2002
    Messages
    1 140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur "couteau mosellan"
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 140
    Points : 2 286
    Points
    2 286
    Par défaut
    Bonjour,

    Je ne sais pas s'il y a une logique Access ? Plutôt une syntaxe un peu particulière pour les requêtes
    de ce que je me souviens mais on s'y fait ...

    Prenons un exemple pour la partie couple ... c'est juste pour éclaircir les idées ... en espérant que je n'ai pas
    fait des erreurs d'alias, liaisons par ci par là ... alors il suffira de rectifier

    Table client avec Claude et Marie Adams marié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IdCli, NomCli
    1,'Adams Claude'
    2,'Adams Marie'
    3,'Borler John'
    4,'Isaas Grace'
    Table couple pour relier les Adams
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IdCouple,IdCli
    1,1
    1,2
    Table placement, on voit que Claude a 5000 +1000 et Marie 3000, Grace Isaas a quant à elle 2000 ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IdPlacement, IdCli, Montant
    1,1,5000
    1,2,3000
    3,4,2000
    4,1,1000

    Requête pour un client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select c.IdCli, c.NomCli, sum(p.Montant) from client c 
    inner join placement p
    on c.IdCli = p.Idcli
     
    Group by c.IdCli, c.NomCli
    Order by 2

    Requête pour un couple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Select co.IdCouple, sum(p.Montant) from client c 
    inner join placement p
    on c.IdCli = p.Idcli
     
    inner join couple co
    on co.IdCli = c.Idcli
     
    Group by co.IdCouple
    On pourra créer un autre table libcouple pour identifier rapidement le couple
    Note : le statut peut figurer dans une nouvelle table pour éviter les redondances (normalisation)
    ex :
    Table libcouple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IdCouple, NomCouple, (Statut)
    1,'Famille Adams', ('Marié')
    ou introduire de la redondance (laxisme quand on est pressé )

    Table couple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IdCouple,IdCli, (NomCouple, Statut)
    1,1,('Famille Adams', 'Marié')
    1,2,('Famille Adams', 'Marié')
    Alors comment fait-on ça en Access ? Je n'ai pas d'access sous le coude ...
    Emérite, émérite je ne pense pas ... plutôt dans le développement depuis FORT FORT longtemps, c'est mon job, ça oui
    A part ça ... Il ne pleut jamais en Moselle !

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Idéalement il vaudrait mieux créer une table d'association pour réunir les couples parce que là il va falloir que tu entres l'info à 2 places, partenaire1 - > Partenaire2 et Partenaire2->Partenaire1 ou alors que tu identifies les couples et que tu élimines le partenaire qui n'a pas l'info.

    Avec une table d'association tu n'as qu'un seul enregistrement par couple.

    Sinon tu peux aussi avoir une association au niveau du placement avec une notion de titulaire, ça sa marche si tu n'as pas des placements seulement pour partenaire1 et des placements seulement pour partenaire2.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Copier un enregistrement dans une même table
    Par slammer dans le forum Langage SQL
    Réponses: 11
    Dernier message: 04/05/2010, 23h17
  2. Réponses: 2
    Dernier message: 19/10/2007, 14h33
  3. mysql: relier deux enregistrement d'une même table
    Par __antoine__ dans le forum Administration
    Réponses: 2
    Dernier message: 14/06/2007, 23h14
  4. Deux 'insert' dans la même table
    Par Arola78 dans le forum Access
    Réponses: 2
    Dernier message: 24/10/2006, 10h02
  5. Nls_lang : deux codage dans une même table
    Par Oraman dans le forum Oracle
    Réponses: 6
    Dernier message: 22/08/2006, 12h36

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