我存储多层次类别。桌子看起来像这样:
类别表

+-------------+---------------+--------------------+
| category_id | category_name | parent_category_id |
+-------------+---------------+--------------------+
|           1 | Clothing      | NULL               |
|           2 | Footwear      | NULL               |
|           3 | Men           | 1                  |
|           4 | Women         | 1                  |
|           5 | Shirts        | 3                  |
|           6 | T-Shirts      | 3                  |
|           7 | Jeans         | 3                  |
+-------------+---------------+--------------------+

公司类别映射表
+------------+------------+-------------+
| cmp_cat_id | company_id | category_id |
+------------+------------+-------------+
|          1 |          7 |           5 |
|          2 |          7 |           6 |
|          3 |          7 |           7 |
+------------+------------+-------------+

我想从分类表中获取有关公司id的所有分类、子分类、子分类。我很困惑如何做到这一点。我可以为商店公司类别创建一个新表吗?
我想在下拉列表中显示输出。
我有三个下拉列表,一个是主类别下拉列表,第二个是子类别下拉列表,第三个是子类别下拉列表。下拉菜单是按公司填写,即不同的公司有不同的类别。
输出显示屏。
对不起我的英语。
谢谢你帮我。

最佳答案

试试这个代码。

  SELECT c1.`category_name` as `category` , c2.`category_name` as `sub-category`, c3.`category_name` as `sub-sub-category` FROM `categories` as c1
    LEFT JOIN `categories` as c2 ON c1.`category_id`=c2.`parent_category_id`
    LEFT JOIN `categories` as c3 ON c2.`category_id`=c3.`parent_category_id`
    where c1.`parent_category_id` IS NULL

关于公司id
SELECT cm.`company_id`, c1.`category_name` as `category` , c2.`category_name` as `sub-category`, c3.`category_name` as `sub-sub-category` FROM `categories` as c1
LEFT JOIN `categories` as c2 ON c1.`category_id`=c2.`parent_category_id`
LEFT JOIN `categories` as c3 ON c2.`category_id`=c3.`parent_category_id`
INNER JOIN `company_category_mapping` as cm ON cm.`category_id`=c3.`category_id`
    where c1.`parent_category_id` IS NULL

如果需要获取特定公司id的数据。
例如:公司id=7
SELECT cm.`company_id`, c1.`category_name` as `category` , c2.`category_name` as `sub-category`, c3.`category_name` as `sub-sub-category` FROM `categories` as c1
    LEFT JOIN `categories` as c2 ON c1.`category_id`=c2.`parent_category_id`
    LEFT JOIN `categories` as c3 ON c2.`category_id`=c3.`parent_category_id`
    INNER JOIN `company_category_mapping` as cm ON cm.`category_id`=c3.`category_id` AND cm.`company_id`=7
        where c1.`parent_category_id` IS NULL

10-07 13:28
查看更多