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

PHP实现仅展示与选中类别匹配的品牌技术咨询

解决方案:筛选指定分类下有产品的品牌

这问题我之前做电商项目时也碰到过,核心就是要关联brands和products两张表,只保留在目标分类下有对应产品的品牌。下面给你两种常用的实现方式:

方法一:使用INNER JOIN关联查询

这种方式通过内连接直接关联两张表,自动过滤掉没有对应产品的品牌,再用DISTINCT去重(避免同一个品牌因多个产品重复出现):

SELECT DISTINCT b.id, b.name
FROM brands b
INNER JOIN products p ON b.id = p.brand_id
WHERE p.cat = 3;

执行结果会是:

idname
1nike
3reebok

正好符合需求——只显示分类3下有产品的品牌,puma因为没有分类3的产品被排除了。

方法二:使用子查询先获取有效品牌ID

如果你觉得子查询逻辑更直观,可以先从products表中筛选出分类3下的所有品牌ID,再用这个集合去匹配brands表:

SELECT id, name
FROM brands
WHERE id IN (
    SELECT DISTINCT brand_id
    FROM products
    WHERE cat = 3
);

这个写法和方法一的结果完全一致,只是逻辑拆分更明显,适合新手理解。

扩展:统计每个品牌的产品数量

如果页面需要展示每个品牌在该分类下的产品数量,可以在查询中加入GROUP BY和COUNT:

SELECT b.id, b.name, COUNT(p.id) AS product_count
FROM brands b
INNER JOIN products p ON b.id = p.brand_id
WHERE p.cat = 3
GROUP BY b.id, b.name;

执行结果会多出产品数量列:

idnameproduct_count
1nike2
3reebok2

这样用户能更清楚每个品牌的产品规模,体验更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:16:35