84 votes

PostgreSQL JOIN des données de 3 tables

Je suis nouveau à PostgreSQL et j'essaie d'écrire une requête. Je suis sûr que c'est facile pour quelqu'un qui sait ce qu'il fait, mais pas pour moi :)

En fait, j'ai trois tableaux. Dans la première, je stocke des informations sur les patients. Dans la deuxième, je stocke une référence à chaque image. Dans la troisième, je stocke le lien vers le chemin d'accès au fichier de l'image. Je n'ai pas conçu la base de données et je ne sais donc pas pourquoi la table des fichiers d'images est séparée, mais c'est le cas.

Ce que je veux faire, c'est sélectionner les données de la première table, en joignant les données d'une deuxième puis d'une troisième table, de manière à obtenir le nom et le chemin d'accès au fichier dans le résultat.

La structure de base est donc la suivante :

Table 1:
person_id | name

Table 2:
person_id | image_id

Table 3:
image_id | `path filename`

Ce que je veux faire, c'est saisir dans une seule requête le "nom" de la personne et le "chemin d'accès au fichier" de l'image.

Je me contente d'une réponse de type "modèle" avec la jointure dont j'ai besoin. Je n'ai pas besoin qu'elle soit écrite en code réel. (c'est-à-dire que je pense que vous pouvez simplement m'écrire une réponse qui dit SELECT table1.name, table3.pathfilename FROM JOIN ... etc... ).

172voto

ozczecho Points 3575

Quelque chose comme :

select t1.name, t2.image_id, t3.path
from table1 t1 
inner join table2 t2 on t1.person_id = t2.person_id
inner join table3 t3 on t2.image_id=t3.image_id

22voto

Daniel Frey Points 30752

Peut-être que ce qui suit est ce que vous recherchez :

SELECT name, pathfilename
  FROM table1
  NATURAL JOIN table2
  NATURAL JOIN table3
  WHERE name = 'John';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X