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

Schéma Discussion :

jointure d'une table avec elle-même [Modèle Relationnel]


Sujet :

Schéma

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut jointure d'une table avec elle-même
    Bonjour,

    je reviens vers vous car je ne parviens pas à comprendre le principe d'une jointure d'une table avec elle-même.

    Voici l'exemple du cours:

    Table Employes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    NEmp      Emploi        NResp
    1         PDG
    2         Directeur      1
    3         Directeur      1
    4         Ingénieur      3
    5         Commercial     3
    On fait cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  E1.NEMP, E2.EMPLOI
    FROM    EMPLOYES E1, EMPLOYES E2
    WHERE   E1.NRESP = E2.NEMP
    et on obtient ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    E1.NEmp   E2.EMPLOI
       2      PDG
       3      PDG
       4      DIRECTEUR
       5      DIRECTEUR
    et là, j'ai du mal à saisir.

    Je me dis qu'on a associé NEmp avec NResp

    Du coup, il n'y a pas de NResp pour le poste de PDG, les emplois de directeurs ont comme NResp 2 et 3, celui de l'ingénieur 4 et celui du commercial, 5.

    Cela m'explique pourquoi l'on obtient un tableau commençant par 2 et finissant par 5.

    Cependant, je ne comprends pas vraiment le mécanisme (la ligne de commande) permettant d'associer le NResp avec l'emploi du NEmp.

    Car on voit que les deux 1 renvoient au premier emploi, soit PDG, et les deux 3 à l'emploi de NEmp (3), qui est directeur.

    Du coup, on se retrouve avec deux PDG et deux directeurs.

    Mais je ne saisis pas comment le langage SQL fait cela.

    En vous remerciant par avance pour votre aide,
    John

  2. #2
    Membre actif Avatar de yroubag
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2004
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2004
    Messages : 162
    Points : 224
    Points
    224
    Par défaut
    Salut

    J'ai du mal à saisir quelle est exactement ta question.

    Quel résultat souhaites-tu obtenir avec ta requête?

    Yroubag
    Yroubag
    Bien poser les questions, c’est tout un art.
    Où tout dépend, bien sûr, de la réponse que l’on veut obtenir. -André Frossard

  3. #3
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Je dirais que cette requête répond à la question suivante :

    Quelle est l'emploi du responsable de chaque employé ?

  4. #4
    Membre habitué
    Inscrit en
    Septembre 2004
    Messages
    138
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 138
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par johnny3 Voir le message
    Bonjour,
    Du coup, on se retrouve avec deux PDG et deux directeurs.
    John
    Normal : tu demande le responsable pour chaque employés .

    Tu as donc 2 employés qui ont comme responsable le PDG etc...

    WHERE E1.NRESP = E2.NEMP

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    bonjour et merci pour vos réponses.

    En fait, ce que je ne comprends pas bien, c'est comment sql parvient à établir le tableau final. J'ai du mal à saisir le processus en fait.

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par johnny3
    En fait, ce que je ne comprends pas bien, c'est comment sql parvient à établir le tableau final. J'ai du mal à saisir le processus en fait.
    Sur une feuille de papier, représentez côte à côte deux tables jumelles Employes1 et Employes2, ayant la même valeur (le même contenu) et réalisez à la main l'opération de jointure, en vous substituant au SGBD.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par johnny3 Voir le message
    ...
    En fait, ce que je ne comprends pas bien, c'est comment sql parvient à établir le tableau final. J'ai du mal à saisir le processus en fait.
    En SQL, on ne s'interesse pas au COMMENT mais au QUOI.

    Le COMMENT, c'est le propre du SGBD en fait ...

    Et ça dépend de la taille des tables ( nombre de lignes ), de la présence d'INDEX ou pas, et d'autres facteurs encore ...

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par Luc Orient Voir le message
    En SQL, on ne s'interesse pas au COMMENT mais au QUOI.

    Le COMMENT, c'est le propre du SGBD en fait ...

    Et ça dépend de la taille des tables ( nombre de lignes ), de la présence d'INDEX ou pas, et d'autres facteurs encore ...
    oui ok, mais ça ne répond pas à ma question. D'ailleurs, cet exercice d'SQL est dans mon cours sur les SGBD.

  9. #9
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2005
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 473
    Points : 3 283
    Points
    3 283
    Par défaut
    Citation Envoyé par johnny3 Voir le message
    oui ok, mais ça ne répond pas à ma question. D'ailleurs, cet exercice d'SQL est dans mon cours sur les SGBD.
    Quelle est la question précise posée dans votre exercice sur le SQL ?

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 207
    Points : 114
    Points
    114
    Par défaut j'ai compris
    ça y est, je viens enfin de comprendre. En fait, je ne saisissais pas bien le principe mais c'est passé. Merci à tous,
    John

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Points : 63
    Points
    63
    Par défaut
    Bonjour.
    Je me suis retrouvé sur cette discussion car j'essaye de faire à peu près la même chose.

    En effet, je veux comparer une table avec elle même (son état de jour -1 [hier quoi] ). Le problème est que la table ne peux pas avoir de clé primaire car il y a des doublons que je ne peux pas supprimer .
    (J'essaye de fair cela avec une requête de mise à jour).

    Auriez-vous une idée ?

    Merci d'avance

  12. #12
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 966
    Points : 30 778
    Points
    30 778
    Billets dans le blog
    16
    Par défaut
    Bonsoir freeman,


    L'auto-jointure d'une table, appelons-la T1, ça n'est pas la mer à boire, mais si cela peut vous simplifier la vie, vous créez un cloneT2 de T1, vous comparez ces deux tables et en mettez une à jour (voire une 3e qui soit le résultat valide...)
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

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

Discussions similaires

  1. [CakePHP] Association d'une table avec elle même
    Par kibla dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 12/12/2009, 16h11
  2. Table de jointure d'une entité avec elle-même
    Par Danger dans le forum Hibernate
    Réponses: 0
    Dernier message: 15/05/2009, 22h13
  3. Probleme jointure d'une table sur elle même
    Par fred64 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/05/2006, 16h01
  4. Croisement d'une table avec elle même
    Par lelapin dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/09/2005, 08h44
  5. [arborescence] jointure d'une table avec elle même ?
    Par Celelibi dans le forum Requêtes
    Réponses: 2
    Dernier message: 16/11/2004, 19h48

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