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

Requêtes et SQL. Discussion :

Regroupement de 2 tables avec clé primaire en évitant d'avoir des doubles


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Regroupement de 2 tables avec clé primaire en évitant d'avoir des doubles
    Bonjour à tous.
    Bon j'ai tout lu dans les faq :
    - les types de jointure
    - les regroupements
    - le Langage SQL appliqué

    J'utilise Access 97 et ouais encore!!!

    Donc j'ai deux tables l'une avec des personnes, l'autre qui fait un lien entre les personnes et des organisations. Donc une personne peut-être membres de plusieurs organisations.



    J'aimerais crée une requête pour avoir une liste de toutes les personnes sans double, qu'elle soit membre ou non de plusieurs organisations.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Personnes.NumIDPers, Membre.NomOrg
    FROM Personnes INNER JOIN Membre ON Personnes.NumIDPers = Membre.NumIDPers
    GROUP BY Personnes.NumIDPers, Membre.NomOrg;
    Avec le code qui précède, les personnes apparaissent autant de foi, qu'elles sont membres d'une organisation.

    J'utilise le NumIDPers comme point de comparaison puisqu'il est unique pour chaque personne.

    J'ai essyé les groupements, les jointures (inner, left, right), rien n'y fait ...

    Un grand merci à ceux qui on tous lu ...


  2. #2
    Membre du Club Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Points : 60
    Points
    60
    Par défaut
    Je n'ai pas réellement compris ce que tu veux... tu veux afficher les personnes quelles que soit leur organisation, et tu affiches aussi l'organisation?

    Pour t'aider, il y a la fonction DISTINCT.

    je croyais qu'elle ne fonctionnait pas sous ACCESS, mais elle est référencée dans la FAQ...

    donc essaye ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT Personnes.NumIDPers, Membre.NomOrg
    FROM Personnes INNER JOIN Membre ON Personnes.NumIDPers = Membre.NumIDPers
    GROUP BY Personnes.NumIDPers, Membre.NomOrg;
    je l'ai trouvé là:
    http://access.developpez.com/faq/?pa...ept#DoublonReq

    j'espère que ça te sera utile et que j'ai répondu à ta question...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 17
    Points : 18
    Points
    18
    Par défaut
    Je ne crois pas que le distinct fonctionnera, puisque cette commande permettra uniquement d'éviter les doublons du NumIDPers ET NomOrg. Comme j'imagine qu'un membre ne peut pas faire deux fois partie de la même organisation, le distinct devient quelque peu inutile à mon avis. Cependant, je ne suis pas sûre moi non plus de bien comprendre ce que tu désires obtenir comme résultat. Si un membreX est membre de l'organisationA, l'organisationB et l'organisationC, tu voudrais que le membreX ne se répète qu'une seule fois dans la liste, avec le nom des trois organisations auquelles il fait partie ?

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse Océliane

    J'avais essayé et je viens encore ... Distinct, distinctrow, cela ne marche pas!

    Oui, j'affiche le nom de l'organisation (qui vient d'une tierse table), haaa si on retire la table membre, cela marche sans aucun problème... mais c'est pas le but...

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Elle est pas belle la vie ?

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par mary_261
    Je ne crois pas que le distinct fonctionnera, puisque cette commande permettra uniquement d'éviter les doublons du NumIDPers ET NomOrg. Comme j'imagine qu'un membre ne peut pas faire deux fois partie de la même organisation, le distinct devient quelque peu inutile à mon avis. Cependant, je ne suis pas sûre moi non plus de bien comprendre ce que tu désires obtenir comme résultat. Si un membreX est membre de l'organisationA, l'organisationB et l'organisationC, tu voudrais que le membreX ne se répète qu'une seule fois dans la liste, avec le nom des trois organisations auquelles il fait partie ?
    merci de ta réponse

    oui c'est exactement ça, à la limite, quelques soit l'une des 3 organisations qui apparait c'est moins important!!!

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par random
    j'utilise déja les fonctions de regroupement... j'aimerais le faire uniquement sur le numID. Et si je met l'organisation en expression, la requête ne veut pas s'exécuter!

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Un grand merci à tous pour vos réponse...

    En fait Random, m'as mis sur la piste, lors de la sélection des regroupements ... comme on ne veux pas que toutes les organisations dont fait partie une personne apparaisent. Dans regroupement de l'organisation, il faut utisé l'option, dernier ou premier ... et il n'affiche que la première ou dernière organisations trouvée pour cette personne...

    Astuce à rajouter dans la faq!!!!



  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 12
    Points
    12
    Par défaut
    select distinctrow

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion impossible dans une table avec clé primaire composé
    Par FloFlo2 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/02/2010, 18h43
  2. Regroupement de deux tables avec juste les valeurs identiques
    Par ange_dragon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/07/2007, 15h42
  3. [Requête] regroupement de 2 tables avec champs différents
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/04/2007, 21h40
  4. table avec clé primaire et varchar(500) incompatibles?
    Par korntex5 dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 08/01/2007, 15h54
  5. Réponses: 3
    Dernier message: 24/04/2006, 21h03

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