我有以下“类别”表:
+--------+---------------+----------------------------------------+
| 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 = ?好的,我的问题是:
产品“苹果iPhone 8”属于苹果,这是智能手机的一个子类别。如果我替换“?”在我对13 (Apple的类别ID )的查询中,我得到了该产品。当我替换“?”在我对12 (智能手机的类别ID )的查询中,我没有得到该产品。我想选择所有的产品是在类别中或在一个子/外孙/.类别。如果可能的话,我如何使用一个查询来完成这个任务?
发布于 2017-12-24 12:40:58
您可以使用join。你的query应该是这样的
SELECT
id,
name
FROM
products
JOIN
categories
ON
products.category_id = categories.id;发布于 2017-12-24 12:45:41
它可以通过连接来实现。
在products.category_id = categories.id上从产品联接类别中选择id,名称,其中products.category_id = 13或categories.parent_id = 12
发布于 2017-12-24 13:17:55
在products.category_id = categories.id上从产品左边的联接类别中选择id,name
https://stackoverflow.com/questions/47960642
复制相似问题