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 :

jointure avec clé composée de 2 colonnes


Sujet :

Langage SQL

  1. #1
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut jointure avec clé composée de 2 colonnes
    Bonjour,

    j'ai deux tables :
    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
    la première :
    CREATE TABLE ENTFACT (
        ID                     BIGINT NOT NULL,
        EF_NUMPOSTE            VARCHAR(3),
        EF_DATEFACTURE         DATE,
        EF_HEUREFACTURE        TIME,
        EF_ETAT                CHAR(1),
        EF_CODECLIENT          VARCHAR(15),
    );
     
    ALTER TABLE ENTFACT ADD PRIMARY KEY (ID);
     
    et la seconde :
    CREATE TABLE LIGFACT (
        ID                    BIGINT NOT NULL,
        LF_NUMLIGNE           INTEGER NOT NULL,
        LF_TYPELIGNE          SMALLINT,
        LF_CODECONSO          VARCHAR(15),
        LF_LIBELLECONSO       VARCHAR(80),
        LF_QUANTITE           INTEGER,
        ...
    );
    ALTER TABLE LIGFACT ADD CONSTRAINT PK_LIGFACT PRIMARY KEY (ID, LF_NUMLIGNE);
    Est il possible de créer une jointure avec les deux clés de ces deux tables ? comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    alter table ENTFACT
    add constraint FK_ENTFACT_1
    foreign key (ID)
    references LIGFACT(ID)
    on delete CASCADE
    on update CASCADE
    Est ce possible de construire la jointure sur simplement la 1ère colonne de la clé de la 2nd table sachant que cette clé est composée de deux colonnes ?

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Le contraire serait plus approprié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    alter table LIGFACT 
    add constraint FK_ENTFACT_1 
    foreign key (ID) 
    references ENTFACT (ID)
    Je n'ai pas inclus les on delete, on update, que je laisse à ton choix.

    La FOREIGN KEY ne peut référencer que la clé complète de la table de référence.

    PS : ton titre n'est pas adapté, il ne s'agit pas jointure, ici.

  3. #3
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 951
    Points
    1 951
    Par défaut
    Merci pour ton aide

    Une clef étrangère ne représente pas une jointure ?

  4. #4
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par free07
    Une clef étrangère ne représente pas une jointure ?
    Je pense que la confusion vient de ce que les jointures (utilisées dans les requêtes) sont très souvent basées sur le couple clé primaire/clé étrangère (éléments du modèle de données dont le but est d'assurer l'intégrité référentielle), mais ce n'est pas obligatoire.

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

Discussions similaires

  1. [AC-2007] Jointure avec colonne Lookup (liste sharepoint)
    Par nonoxp dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 18/02/2011, 14h07
  2. Réponses: 5
    Dernier message: 16/11/2010, 13h46
  3. Réponses: 1
    Dernier message: 18/07/2007, 11h58
  4. Jointure avec conditions sur plusieurs colonnes
    Par ben53 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 28/11/2005, 09h27
  5. Réponses: 2
    Dernier message: 27/10/2005, 11h15

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