如何在Postgres中跨多个表联接?

时间:2019-04-10 21:19:34

标签: 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 个答案:

答案 0 :(得分:3)

我想您想知道如何通过其他表联接没有直接关系的表?那么答案就是在所有必要的表上建立连接链。

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;