You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一查询中获取产品及其所属分组与父分组?

解决方案:查询产品、直接分组及父分组

没问题,我来帮你搞定这个查询!首先咱们先明确下数据库表的结构(根据你的描述推导,你可以根据实际表名/字段名调整):

假设的表结构

我猜你的数据库里应该有两张核心表:

  • products(产品表):存储产品基本信息,关键字段包括:
    • product_id:产品唯一ID
    • product_name:产品名称
    • category_id:关联的直接分组ID
  • categories(分组表):存储分组层级信息,关键字段包括:
    • category_id:分组唯一ID
    • category_name:分组名称
    • parent_category_id:关联的父分组ID(顶级分组的这个字段可以设为NULL或者0)

举个符合你例子的样本数据:

products表数据

product_idproduct_namecategory_id
1伏特加2
2杰克丹尼2
3百事可乐3
4果汁3

categories表数据

category_idcategory_nameparent_category_id
1饮品NULL
2含酒精饮品1
3无酒精饮品1

最终查询语句

我们只需要两次关联分组表:一次获取产品的直接分组,一次获取该分组的父分组。用LEFT JOIN可以兼容顶级分组(无父分组)的情况,避免数据丢失:

SELECT
    p.product_name AS 产品名称,
    direct_cat.category_name AS 直接关联分组,
    parent_cat.category_name AS 父分组
FROM
    products p
-- 关联直接分组
JOIN
    categories direct_cat ON p.category_id = direct_cat.category_id
-- 关联父分组(用LEFT JOIN允许父分组为NULL)
LEFT JOIN
    categories parent_cat ON direct_cat.parent_category_id = parent_cat.category_id;

查询结果示例

执行上面的SQL后,你会得到这样的结果:

产品名称直接关联分组父分组
伏特加含酒精饮品饮品
杰克丹尼含酒精饮品饮品
百事可乐无酒精饮品饮品
果汁无酒精饮品饮品

如果你的实际表名或字段名和我假设的不一样,只需要把对应的名称替换掉就行啦!

内容的提问来源于stack exchange,提问作者billy_56

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:44:14