【发布时间】:2017-12-24 12:36:07
【问题描述】:
我有以下“类别”表:
+--------+---------------+----------------------------------------+
| ID | Parent ID | Name |
+--------+---------------+----------------------------------------+
| 1 | 0 | Computers |
| 2 | 1 | Apple |
| 3 | 1 | HP |
| 4 | 2 | Macbook Air |
| 5 | 2 | Macbook Pro |
| 6 | 1 | Dell |
| 7 | 6 | Inspiron |
| 8 | 6 | Alienware |
| 9 | 8 | Alienware 13 |
| 10 | 8 | Alienware 15 |
| 11 | 8 | Alienware 17 |
| 12 | 0 | Smartphones |
| 13 | 12 | Apple |
| 14 | 12 | Samsung |
| 15 | 12 | LG |
+--------+---------------+----------------------------------------+
假设我有以下“产品”表:
+--------+---------------+----------------------------------------+
| ID | Category ID | Name |
+--------+---------------+----------------------------------------+
| 1 | 13 | Apple iPhone 8 |
| 2 | 13 | Apple iPhone 8 Plus |
| 3 | 14 | Samsung Galaxy S8 |
+--------+---------------+----------------------------------------+
通过以下查询,我选择了一个类别中的所有产品:
SELECT
id,
name
FROM
products
WHERE
category_id = ?
好的,我的问题:
“Apple iPhone 8”产品属于 Apple 类别,这是 Smartphones 类别的子类别。如果我替换'?在我对 13(Apple 的类别 ID)的查询中,我得到了产品。当我替换'?在我使用 12(Smartphones 的类别 ID)的查询中,我没有得到产品。我想选择该类别或子/孙/...类别之一中的所有产品。如何使用单个查询(如果可能)做到这一点?
【问题讨论】:
-
您能否发布
category_id=13的预期输出? -
除了 MySQL 之外,我还会使用 PHP。一次查询可获取所有子/孙类别。在 PHP 中处理结果以构建第二个查询以获取这些类别中的所有产品。
-
另外:这个问题/答案看起来很相关:stackoverflow.com/q/20215744/1967095