php - 选择类别的所有项目及其子类别中的所有项目

标签 php mysql sql

我正在尝试建立自己的网上商店。
我有两个表 - 产品和类别。结构是这样的:


categories :
id       name       parent_id  

products :
id       title      category_id  

当用户点击主要类别时,我正在选择要显示的产品:

url : www.mypage.com/?category_id=1
sql : 'SELECT * FROM products WHERE category_id = 1'  

问题是我想在用户单击主类别时选择它的子类别中的所有产品。例如,类别 Family 是类别 Cars 的子类别,在数据库中看起来像这样

categories :
id       name       parent_id  
1        'Cars'     0
2        'Family'   1  
3        'Sport'    1  

products :
id       title      category_id  
1        'Ferrari'  3 
2        'Honda'    2  

如您所见,我当前的选择不会选择 FerrariHonda,因为用户正在查看 id=1 的类别。 . 如何修改我的选择,以便显示主类别的子类别中的所有产品?

最佳答案

"SELECT * FROM products WHERE category_id = '$your_category_id'
OR category_id IN (
  SELECT parent_id FROM categories 
    WHERE id = '$your_category_id'
)"

注意:此示例仅针对两层深度。

例如

Ferrari > Cars

它不超过两个级别。

例如

Ferrari Child Category > Ferrari > Cars

关于php - 选择类别的所有项目及其子类别中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27504666/

相关文章:

php - grep with -f 就像在 PHP 中一样

php - 如何显示按另一个表数据行排序的表数据?

php - MYSQL 获取行排名

php - 在 php 中将当前月份拆分为数周

php - 使用 tcpdf 生成 pdf 下载

mysql - 特定条件匹配后分组

MySQL 查询替换字符串中所有出现的正则表达式

php - 对 PHP OOP 作用域感到困惑

sql - 在 SQL 中如何在更新中使用 Sum 函数

mysql - 如何在 T-SQL 中选择一列中具有相同值的多个条目