gpt4 book ai didi

php - MySQL 查询 : query the PRODUCTS table (among others) and bring up BOTH the category AND subcategory

转载 作者:行者123 更新时间:2023-11-29 03:13:23 27 4
gpt4 key购买 nike

我想知道是否有人可以帮助我解决我遇到的 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>

如上图:Contactors 和 Overloads 属于 Motor Control,因为它们各自的子类别的值为 25,即 Motor Controls 的 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 数据库。

最佳答案

SELECT  p.*, 
c.company_name,
pc.category_text AS subcategory
ppc.category_text AS category
FROM products p,
company c,
product_categories pc,
product_categories ppc
WHERE p.product_supplier_id = c.company_id
AND p.product_category_id = pc.category_id
AND pc.subcategory = ppc.category_id

P.S:我希望 MySQL 能更好地支持查询分层数据(如 Oracle 中的 connect by 子句)

关于php - MySQL 查询 : query the PRODUCTS table (among others) and bring up BOTH the category AND subcategory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4566479/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com