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

PostgreSQL Discussion :

Jointure sur nom de table stocké en base


Sujet :

PostgreSQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Jointure sur nom de table stocké en base
    Bonjour,

    je cherche à pouvoir choisir sur quelle table effecture une jointure sachant que le nom de la table sur laquelle effectuer la jointure est lui-même stocké en base.

    En gros, j'ai 4 tables :

    Donnee
    id
    id_table

    Media
    id
    nom_table
    id_media

    Image
    id
    data

    Video
    id
    data


    Je voudrais effectuer le choix de la jointure entre Donnee et Image OU Video grâce à la table Media.

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM Donnee d
    JOIN Media m ON (m.id = d.id_table)
    JOIN m.nom_table ON (m.id_media = m.nom_table.id)
    WHERE d.id = 1
    Evidemment, c'est la ligne JOIN m.nom_table ... qui coince.
    Avez-vous une idée pour résoudre cette problématique ?

  2. #2
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    tu peux faire

    deY!

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    J'ai peur de ne pas bien comprendre en quoi cela pourrait m'aider.

    Tu peux développer un peu ?

  4. #4
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM Donnee d
    LEFT JOIN (SELECT nom_table FROM media) ...
    En même temps j'ai plutot l'impression que ton modele relationnel est faux ou plutot mal conçu, j'aurais fait de video et image des sous-entités de media.
    parceque a priori je ne voix pas clairement les relations ni le bien fondé de tout ça



    Aprés tu peux essaye de regarder dans information_schema avec tables, mais bon, ça serait un peu galére
    deY!

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Disons que dans Donnee, il peut y avoir un médium qui peut-être soit une image, soit une vidéo, et qu'on ne connaît pas le type de Medium à priori.
    En même temps, je dois garder la contrainte de clé étrangère entre la Donnee et le Medium.

    Quand tu dis "sous-entités", tu veux dire que Video et Image pourraient hériter de Media ? Du coup, c'est PostGres qui se débrouille tout seul pour trouver l'Id de liaison ?

  6. #6
    Membre averti Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Points : 414
    Points
    414
    Par défaut
    Oui... mais au niveau relationnel, VIDEO et IMAGE seront dans la table media, tu auras donc un champ typemedia qui servira à faire la différenciation... c'est quand même beaucoup plus simple, et surtout plus juste au niveau du SGBD
    deY!

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2005
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Je vois bien, mais les tables Video et Image sont des tables externes provenant de 2 bases de données différentes (et je dois conserver les même ids que dans ces bases). J'aurais dû préciser cela dès le début ...

    [EDIT] Bon je vais faire autrement(id_image et id_video dans Donnee optionnels). Merci de t'être penché sur mon problème deY!

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

Discussions similaires

  1. Bizarrerie sur nom de table !
    Par Christophe Charron dans le forum Outils
    Réponses: 1
    Dernier message: 22/08/2005, 15h38
  2. [C#] [.NET] Récupération des noms de tables d'une base
    Par GuillaumeG dans le forum Windows Forms
    Réponses: 7
    Dernier message: 07/04/2005, 13h31
  3. jointure sur une même table
    Par guillaumeVb6 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/09/2004, 15h08
  4. Afficher noms des tables d'une base
    Par jeff37 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/01/2004, 16h00
  5. noms des tables d'une base
    Par molto dans le forum SQL
    Réponses: 2
    Dernier message: 17/03/2003, 22h14

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