Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2007, 10h42   #1
Futur Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 18
Points : 18
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 :
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 ?
echataig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 13h42   #2
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
tu peux faire

__________________
deY!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 14h37   #3
Futur Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 18
Points : 18
J'ai peur de ne pas bien comprendre en quoi cela pourrait m'aider.

Tu peux développer un peu ?
echataig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 14h55   #4
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
Code :
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!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 16h22   #5
Futur Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 18
Points : 18
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 ?
echataig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2007, 19h18   #6
Membre éclairé
 
Avatar de deY!
 
Inscription : avril 2006
Messages : 403
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2006
Messages : 403
Points : 358
Points : 358
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!
deY! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2007, 09h52   #7
Futur Membre du Club
 
Inscription : mai 2005
Messages : 35
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 35
Points : 18
Points : 18
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!
echataig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h32.


 
 
 
 
Partenaires

Hébergement Web