【发布时间】:2010-12-30 21:41:00
【问题描述】:
我想知道是否有人可以帮助我解决我遇到问题的 MySQL (v5.0.51) 查询。我有一张这样的桌子:
category_id | category_text | subcategory
25 | Motor Controls | NULL
26 | Contactors | 25
27 | Overloads | 25
28 | Motors | NULL
29 | Accessories | 28
subcategory 列中带有 NULL 的每个条目代表一个顶级类别,subcategory 中的值告诉该子类别属于哪个顶级类别。 p>
例如上面: 接触器和过载属于电机控制,因为它们各自的子类别的值为 25,即电机控制的 category_id (25)
现在我在 PRODUCTS 表中使用这些值来存储产品,但在这里我只存储子类别的 category_id。
product_id | product_item | product_supplier_id | product_description | product_category_id
24 | Product A | 39 | Product A description | 27 --category_id of subcategory (ie.Overloads)
25 | Product B | 39 | Product B description | 26 --(Contactors)
我遇到的问题是我需要 一个 SQL 查询,我可以在其中查询 PRODUCTS 表(以及其他)并同时显示类别和子类别。我可以为一个或另一个做,但不能两者兼而有之。我已经尝试过 UNION、JOINS 等,但似乎无法得到它。到目前为止,这就是我所拥有的,它只是提出了子类别。
SELECT p.*, c.company_name, pc.category_text AS subcategory
FROM products p, company c, product_categories pc
WHERE p.product_supplier_id = c.company_id
AND p.product_category_id = pc.category_id
这会导致查询生成以下结果。
product_id | product_item | product_supplier_id | product_description | product_category_id | company_name | subcategory
24 | Product A | 39 | Product A description | 27 | Product A Supplier | Overloads
25 | Product B | 39 | Product B description | 26 | Product B Supplier | Contactors
基本上我想要的是为每个子类别添加一个包含正确顶级类别的列,使其看起来像这样
24 | Product A | 39 | Product A description | 27 | Product A Supplier | **Motor Controls** | Overloads
我可以通过创建表的方式来做到这一点还是需要修改它?
抱歉,我提供了一些漂亮的图片以使其更易于理解,但“声誉”为 1 ,我无法发布它。
任何帮助将不胜感激。请注意,我使用 PHP 中的查询来访问 MySQL 数据库。
【问题讨论】: