簡體   English   中英

如何使用我的案例加入Postgres查詢?

[英]How to use join in my case Postgres query ?

我正在嘗試獲取產品的namecateg_id 我有兩張桌子,

product_template

categ_id     name
7            Nokia classic
7            Nokia lumia
8            samsung s3
6            huawai

這張桌子有我想要的product

product_category

id       name         parent_id   
6        phones       3
7        nokia        6
8        samsung      6

此表顯示哪個產品在phone > nokiaphone > samsung或產品可以直接在手機下如下所示,

喜歡,

phones > huawai
phones > nokia   > Nokia classic
phones > nokia   > Nokia lumia
phones > samsung > samsung s3

我正在使用的查詢是,

select pt.categ_id,pt.name from product_template pt inner join product_category pc on
pt.categ_id=pc.id where pc.parent_id='6'

它顯示除huawai以外的所有產品???

查詢應該運行,因為它可以直接獲得phone下的產品,並通過這種方式phone > nokia > Nokia Classic

提前感謝您的建議。

如果您只想獲取類別下的模板以及該類別的子類別下的模板,請使用該查詢:

select pt.categ_id, pt.name
from product_template pt
inner join product_category pc on pt.categ_id = pc.id
where '6' in (pc.id, pc.parent_id)

但是,它僅選擇所選類別的1個級別范圍內的模板。 如果要選擇所有后代類別的模板,可以使用遞歸公用表表達式

with recursive rpc(id) AS (
    select '3'::int
  union all
    select id
    from product_category pc
    where pc.parent_id = rpc.id
)
select pt.categ_id, pt.name
from product_template pt
inner join rpc on pt.categ_id = rpc.id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM