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

如何在SQL中查询多级分类关联的商品?(CodeIgniter+MySQL电商场景)

没问题,针对你这套三级分类+商品的数据库结构,我整理了几种常用的SQL查询场景,应该能覆盖你电商应用里的大部分需求:

1. 查询所有商品并关联完整的三级分类信息

如果需要展示商品时同时带出它所属的一级、二级、三级分类名称,用这个查询:

SELECT 
    p.product_id,
    p.product_name,
    c.category_name AS top_category,
    sc.subcategory_name AS second_category,
    ssc.subsubcategory_name AS third_category
FROM product p
INNER JOIN subsubcategory ssc ON p.product_subsubcategory_id = ssc.subsubcategory_id
INNER JOIN subcategory sc ON ssc.subsubcategory_subcategory_id = sc.subcategory_id
INNER JOIN category c ON sc.subcategory_category_id = c.category_id;

说明:这里用INNER JOIN是假设所有商品都必须关联到一个三级分类;如果你的业务允许商品暂时不归属任何分类,可以把INNER JOIN换成LEFT JOIN,这样无分类的商品也会被查出来,分类字段会显示为NULL。

2. 根据顶级分类筛选商品

如果用户点击了某个一级分类,要查询该分类下所有层级的商品:

SELECT 
    p.product_id,
    p.product_name,
    sc.subcategory_name,
    ssc.subsubcategory_name
FROM product p
INNER JOIN subsubcategory ssc ON p.product_subsubcategory_id = ssc.subsubcategory_id
INNER JOIN subcategory sc ON ssc.subsubcategory_subcategory_id = sc.subcategory_id
INNER JOIN category c ON sc.subcategory_category_id = c.category_id
WHERE c.category_id = 1; -- 替换成你要查询的顶级分类ID
3. 根据二级分类筛选商品

针对二级分类的商品筛选:

SELECT 
    p.product_id,
    p.product_name,
    ssc.subsubcategory_name
FROM product p
INNER JOIN subsubcategory ssc ON p.product_subsubcategory_id = ssc.subsubcategory_id
INNER JOIN subcategory sc ON ssc.subsubcategory_subcategory_id = sc.subcategory_id
WHERE sc.subcategory_id = 5; -- 替换成目标二级分类ID
4. 根据三级分类筛选商品

最直接的三级分类查询,因为商品表直接关联了三级分类ID:

SELECT 
    product_id,
    product_name
FROM product
WHERE product_subsubcategory_id = 20; -- 替换成目标三级分类ID

如果需要同时带出上级分类信息,也可以加上JOIN:

SELECT 
    p.product_id,
    p.product_name,
    sc.subcategory_name,
    c.category_name
FROM product p
INNER JOIN subsubcategory ssc ON p.product_subsubcategory_id = ssc.subsubcategory_id
INNER JOIN subcategory sc ON ssc.subsubcategory_subcategory_id = sc.subcategory_id
INNER JOIN category c ON sc.subcategory_category_id = c.category_id
WHERE ssc.subsubcategory_id = 20;
5. 查询单个商品的完整分类路径

查看某一件商品所属的全部分类层级:

SELECT 
    c.category_name AS top_category,
    sc.subcategory_name AS second_category,
    ssc.subsubcategory_name AS third_category,
    p.product_name
FROM product p
INNER JOIN subsubcategory ssc ON p.product_subsubcategory_id = ssc.subsubcategory_id
INNER JOIN subcategory sc ON ssc.subsubcategory_subcategory_id = sc.subcategory_id
INNER JOIN category c ON sc.subcategory_category_id = c.category_id
WHERE p.product_id = 100; -- 替换成目标商品ID

这些查询应该能满足你电商应用里商品列表展示、分类筛选、商品详情页展示分类信息的需求。如果有特定的复杂查询场景(比如分页、排序、多条件筛选),可以再补充细节~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:56:13