我已经DB这样的:SQL选择指定类别的所有产品和儿童
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)
我在尝试g从指定的类别获取所有项目。
例如:来自绘画的所有项目将来自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;这种行为可能会继续。我认为你不会用一个简单的查询来解决它,但有递归的东西... – Marco
你可以有很多级别的类别(例如,绘画1属于“乡村景观”属于“景观”,属于“绘画” ),还是只有顶级和类别(即“绘画”和“风景”)?如果前者,请注意,MySQL不允许递归查询 - 请参阅更多这里:http://stackoverflow.com/questions/8561654/how-to-work-with-recursive-query-in-mysql –