【发布时间】:2012-10-23 11:16:58
【问题描述】:
我有这样的数据库:
categories(id, parent_id)
items(id, category_id)
并且有这些条目:
分类:
Paintings(id=1, parent_id=NULL),
Landscape(id=2, parent_id=1)
项目:
Painting1(id=1, category_id=2)
我正在尝试从指定类别中获取所有项目。
例如:Paintings 中的所有项目都是来自 Paintings、Landscape 和任何以 Paintings 为父类别的项目。
我正在尝试执行此操作:
SELECT * FROM items p
JOIN categories cp ON p.category_id = cp.id
JOIN categories cc ON cc.parent_id = cp.id AND p.category_id = cc.id
WHERE cp.id = "1"
但它并没有按我的预期工作。
【问题讨论】:
-
您已加入类别表两次。我想你想在上次加入时使用 Items 表
-
首页可以有多少层?我的意思是,您可以拥有另一个具有 parent_id=2; 的类别。这种行为可能会继续下去。我认为你不会用简单的查询来解决它,而是用递归的东西......
-
你可以有很多级别的类别(例如,Painting1属于“Rural Landscapes”,属于“Landscapes”属于“Paintings”),还是只有顶级和类别(即“Paintings” ”和“风景”)?如果是前者,请注意 MySQL 不允许递归查询 - 在此处查看更多信息:stackoverflow.com/questions/8561654/…
-
我将只有主要的父母和孩子类别。例如:不会有任何类别作为父景观。
标签: mysql sql parent-child