Как мне объединить несколько таблиц в Postgres?

#sql #postgresql

#sql #postgresql

Вопрос:

У меня есть 5 таблиц,

 product: 
id | name | description | enable
  
 category:
id | name | enable
  
 category_product: 
id | product_id | category_id
  
 image: 
id | name | files | enable
  
 image_product:
id | product_id | image_id
  

Я бы хотел, чтобы моя таблица соединений напоминала это:

product.name | product.description | category.name | image.name | image.file

Ответ №1:

Я думаю, вы хотите знать, как объединять таблицы, которые не имеют прямого отношения, но через другие таблицы? Тогда ответ заключается в построении цепочки соединений по всем необходимым таблицам.

 SELECT p.name,
       p.description,
       c.name,
       i.name,
       i.file
       FROM product p
            INNER JOIN product_category pc
                       ON pc.product_id = p.id
            INNER JOIN category c
                       ON c.id = pc.category_id
            INNER JOIN image_category ic
                       ON ic.product_id = p.id
            INNER JOIN image i
                       ON i.id = ic.image_id;