Javascript 从类别查询项目

Javascript 从类别查询项目,javascript,sql,postgresql,join,recursive-query,Javascript,Sql,Postgresql,Join,Recursive Query,这里没有。我想要具有多级嵌套(可能3到4个)类别的类别。衣服>男装>夏装 所以我制作了递归分类表 +---------------------------------+ | CATEGORIES | +---------------------------------+ | id <PK> | | parent_id <FK -> CATEGORIES.id> | | name

这里没有。我想要具有多级嵌套(可能3到4个)类别的类别。衣服>男装>夏装

所以我制作了递归分类表

+---------------------------------+
| CATEGORIES                      |
+---------------------------------+
| id <PK>                         |
| parent_id <FK -> CATEGORIES.id> |
| name                            |
+---------------------------------+

+-----------------------------------+
| ITEMS                             |
+-----------------------------------+
| id <PK>                           |
| category_id <FK -> CATEGORIES.id> |
| name                              |
+-----------------------------------+
+---------------------------------+
|类别|
+---------------------------------+
|身份证|
|家长id类别。id>|
|名字|
+---------------------------------+
+-----------------------------------+
|项目|
+-----------------------------------+
|身份证|
|类别\标识类别。标识>|
|名字|
+-----------------------------------+
问题是我不知道如何查询第一级父类别下的所有项目

例如,
项目1
在第二级以下,
男装(id:2)
项目2
在第三级以下,
夏装(id:3)

当我查询
服装(id:1)
下的项目时,我想查看所有
项目1
项目2
,这是
男装
夏装
的父项

我该怎么做


Stack:Node.js、Postgres、Knex.js、TypeScript

您可以使用递归查询列出输入类别的所有子项,然后使用它筛选项目:

with recursive cats as (
    select id from categories where name = ?
    union all
    select c.id 
    from categories c
    inner join cats p on p.id = c.parent_id
)
select i.*
from items i
inner join cats c on c.id = i.category_id

问号应替换为要展示其项目的(父)类别的名称(在您的示例中,这将是
'Clothing
)。

您可以使用递归查询列出输入类别的所有子类别,然后使用它筛选项目:

with recursive cats as (
    select id from categories where name = ?
    union all
    select c.id 
    from categories c
    inner join cats p on p.id = c.parent_id
)
select i.*
from items i
inner join cats c on c.id = i.category_id
问号应替换为您想要展示其项目的(父)类别的名称(在您的示例中,这将是
'Clothing