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

SQL Procédural MySQL Discussion :

FOREIGN KEY vers deux tables en meme temps


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut FOREIGN KEY vers deux tables en meme temps
    Bonjour,

    J'ai une table table1 qui contient 3 colones (colone1Table1,colone2Table1,valeur).
    colone1Table1 fait référence à table2(colone1Table2) et colone2Table1 fait référence a table3(colone2Table3).

    Il me faut les deux référence pour avoir la valeur de la table1.
    Comment réaliser la construction de ma table table1?
    Il me faudrait quelque chose qui ressemble à ( mais ceci ne fonctionne pas ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE table1 (
       colone1Table1 char(4) NOT NULL,
       colone2Table2 char(4) NOT NULL,
       valeur int(20) NOT NULL,
       INDEX(colone1Table1,colone2Table1),
       PRIMARY KEY(colone1Table1,colone2Table1),
       FOREIGN KEY(colone1Table1,colone2Table1) REFERENCES (table2(colone1Table2),table3(colone2Table3))
         ON DELETE CASCADE
         ON UPDATE CASCADE
    ) type = InnoDB;
    Merci.

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    il faut spécifier les FK une par une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    FOREIGN KEY(colone1Table1) REFERENCES ...
    FOREIGN KEY(colone2Table1) REFERENCES ...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Citation Envoyé par qi130 Voir le message
    il faut spécifier les FK une par une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    FOREIGN KEY(colone1Table1) REFERENCES ...
    FOREIGN KEY(colone2Table1) REFERENCES ...
    Mais alors, dans le cas contrere, comment lui faire comprendre que colone1Table1 ou colone2Table1 sont les deux références pour avoir une valeur de la table1?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    Je suis etonner de voir que personne ne puisse repondre a cette question

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Par défaut
    Dis moi si je comprends bien :

    Tu as deux tables, par exemple Professeur et une table Administrateur. Tu veux faire une table HeureTravaillée qui peut contenir soit une référence à un Professeur ou une référence à Administrateur.

    La seule solution que je vois, c'est de créer une table Travailleur qui contient toutes les informations commune à Professeur et Administrateur, puis tu référence Professeur, Administrateur et HeureTravaillée vers Travailleur.

    C'est la seule solution que j'ai trouvée.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 40
    Par défaut
    CIFQ_Drew, merci d'avoir répondu.
    Mais c'est pas tout a fait ca que je veux.
    Dans mon cas, il y a deux colone dans la table HeureTravaillée qui contient une référence vers une valeur d'une table et une autre référence vers une valeur d'une autre table

  7. #7
    Membre confirmé

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Par défaut
    Bonjours lichman,

    J'ai regarder ton code, et selon moi tu veux créer une clé primaire à partir de deux champs qui sont des références sur deux tables différentes. Selon moi, tu dois déclarer tes clés étrangères séparements comme qi130 a décrit.

    Mais alors, dans le cas contrere, comment lui faire comprendre que colone1Table1 ou colone2Table1 sont les deux références pour avoir une valeur de la table1?
    Cependant, je ne comprend pas cette réponse. Peux-tu m'en dire plus ?

    J'ai peut-être un cas similaire : Je construit un portail dont des Membres (une table) possède aucun ou des Services (une table). Pour déterminer les services que possède un membre, j'utilise une table SvcActif, qui n'est constitué que de deux clé étrangère : voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TABLE SvcActif(
      fk_svMembre VARCHAR(32) NOT NULL,
      fk_svService VARCHAR(16) NOT NULL,
      FOREIGN KEY (fk_svMembre) REFERENCES Membre(pk_mSurnom),
      FOREIGN KEY (fk_svService) REFERENCES Service(pk_seNom),
      PRIMARY KEY (fk_svMembre, fk_svService)
    ) ENGINE=INNODB;
    Dit moi si cela t'aide.

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

Discussions similaires

  1. [1.x] Hyperlien vers les foreign key dans les tables
    Par Maze45 dans le forum Symfony
    Réponses: 2
    Dernier message: 08/07/2011, 08h59
  2. [PostgreSql] alimenter deux tables en meme temps
    Par galeo27 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/06/2009, 16h28
  3. Enregister dans deux table en meme temps
    Par Msysteme dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/04/2009, 15h40
  4. Insert dans deux tables en meme temps?
    Par radzar dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/04/2008, 11h33
  5. remplir deux tables en meme temps
    Par rafawel dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/06/2005, 16h41

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