我正在尝试使用下一个结构制作菜单:
-category 1
--category 1.1
---category 1.1.1
----product 1
----product 2
----product 3
-category 2
--category 2.1
---category 2.1.1
----product 1
----product 2
----product 3
-category 3
--category 3.1
---category 3.1.1
----product 1
我有像wordpress这样的计划:
relation_category_products表存储来自类别的id和来自产品的id。 问题是什么是使mysql查询拥有所有结构的最佳方法? 我的第一个解决方案是查询父类别(-category),然后为每一行获取下一个--category的id,然后直到提升产品节点。但随着那个tecnique,有很多疑问(目前只有35个)。我不知道什么是更好的方式来获得所有的关系,并用PHP来渲染菜单。
感谢
答案 0 :(得分:1)
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
您的表格结构应该包含父级字段,例如
表“类别”
id(int) name parent(int)
1 Category 1
2 Category 1.1 1
3 Category 1.1.1 2
4 Category 2
5 Category 2.1 4
然后,您可以在“产品”表格中使用一对多关系将其与某个类别相关联。
如果要直接在类别下检索节点,只需通过“父”字段进行SELECT。
如果要检索整个树,请使用连接查询:
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.id
LEFT JOIN category AS t3 ON t3.parent = t2.id
这会给你一些类似的东西:
+-------------+----------------------+---------------+
| lev1 | lev2 | lev3 |
+-------------+----------------------+---------------+
| Category 1 | Category 1.1 | Category 1.1.1|
| Category 2 | Category 2.1 | NULL |
+-------------+----------------------+---------------+
答案 1 :(得分:0)