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 :

Pb afficher plusieurs clé étrangères.


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 62
    Points : 42
    Points
    42
    Par défaut Pb afficher plusieurs clé étrangères.
    Bonjour ,
    j'ai un petit soucis avec une requete qui doit pourtant etre simple...

    J'ai une table prepub qui correspond à une publication.
    Dans cette table j'ai un titre, une date (etc) et plusieurs auteurs.
    Chaque auteur est repéré par une clé étrangère qui pointe sur la table auteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE `Auteur` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `Nom` VARCHAR( 20 )  NOT NULL ,
    `Prenom` VARCHAR( 15 ) NOT NULL ,
    `Bureau` VARCHAR( 15 ) NOT NULL ,
    `Mail` VARCHAR( 40 ) NOT NULL ,
    `Tel` VARCHAR( 10 ) NOT NULL ,
    `Equipe` INT NOT NULL ,
    `Lien` VARCHAR( 50 ) NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    FOREIGN KEY ( Equipe ) REFERENCES Equipe( id ) ,
    INDEX ( `Nom` , `Equipe` ), UNIQUE(Nom,Prenom)
    );


    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
    24
    25
    26
     
    CREATE TABLE `Prepub` (
    `id` INT NOT NULL AUTO_INCREMENT ,
    `Type` VARCHAR( 2 ) DEFAULT 'pp' NOT NULL ,
    `Num` VARCHAR( 8 ) NOT NULL ,
    `Date` DATE NOT NULL ,
    `Titre` VARCHAR( 200 ) NOT NULL ,
    `Auteur1` INT NOT NULL ,
    `Auteur2` INT NOT NULL ,
    `Auteur3` INT NOT NULL ,
    `Auteur4` INT NOT NULL ,
    `Auteur5` INT NOT NULL ,
    `MotCles` VARCHAR( 100 ) NOT NULL ,
    `MSC` VARCHAR( 6 ) NOT NULL ,
    `Resume` TEXT NOT NULL ,
    `Abstract` TEXT NOT NULL ,
    `FichierJoint` varchar(200) NOT NULL ,
    `Langue` VARCHAR( 2 ) NOT NULL ,
    PRIMARY KEY ( `id` ) ,
    FOREIGN KEY ( Auteur1 ) REFERENCES Auteur( id ) ,
    FOREIGN KEY ( Auteur2 ) REFERENCES Auteur( id ) ,
    FOREIGN KEY ( Auteur3 ) REFERENCES Auteur( id ) ,
    FOREIGN KEY ( Auteur4 ) REFERENCES Auteur( id ) ,
    FOREIGN KEY ( Auteur5 ) REFERENCES Auteur( id ) ,
    INDEX ( `Type` , `Titre` , `Auteur1` , `Auteur2` , `Auteur3` , `Auteur4` , `Auteur5` , `MSC`, `Langue` )
    );
    J'aimerais tout simplement afficher tous les auteurs d'une publication donnée.


  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
    Si tu en as la possibilité, recommence la modélisation qui est mauvaise.

    Sinon : 5 jointures externes

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 62
    Points : 42
    Points
    42
    Par défaut
    Non j'ai pas la possibilité de refaire la modélisation.
    Je vais essayer de me renseigner sur les jointures externes (?).
    Merci !
    Sinon , niveau modelisation, t'aurais fait quoi toi ?

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par guano
    Je vais essayer de me renseigner sur les jointures externes
    On a tout là : http://sql.developpez.com/sqlaz/jointures/
    (cf chapitre 2 pour les jointures externes)

    Citation Envoyé par guano
    Sinon , niveau modelisation, t'aurais fait quoi toi ?
    Moi (car je ne prétend pas répondre à la place de notre illustre Médiat), j'aurais fait une table de lien entre Prepub et Auteur : pas besoin des jointures externe, la présence d'un lien identifiant un auteur, et de plus, pas de limitations possible du nombre d'auteurs.
    De plus, dans une table de liens, on peut gérer des notions supplémentaires (ex : un historique).

    En général, tout ensemble de champs servant à stocker des données de natures identiques (la n°1, la n°2, etc) est une hérésie niveau modélisation.

    cf un peu de théorie : http://sql.developpez.com/modelisation/merise/
    (voir les 2.3 et le 2.4 en particulier)

Discussions similaires

  1. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22
  2. [VB.NET]Afficher plusieurs UserControls dans un Panel
    Par Golzinne dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/02/2006, 21h29
  3. [FLASH 8] Afficher plusieurs images
    Par robocop2776 dans le forum Flash
    Réponses: 2
    Dernier message: 02/02/2006, 09h10
  4. [C#] Un composant pour afficher plusieurs lignes ?
    Par Tips dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/12/2005, 19h47
  5. afficher plusieurs numeros pour un nom
    Par allowen dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2005, 13h19

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