【问题标题】:SQL select all products from specified category and its childrensSQL从指定类别及其子类别中选择所有产品
【发布时间】: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 中的所有项目都是来自 PaintingsLandscape 和任何以 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


【解决方案1】:
SELECT * FROM items p
JOIN categories cp ON p.category_id = cp.id
JOIN categories cc ON cp.parent_id = cc.id
WHERE cc.id = "1"

【讨论】:

  • 当我从具有父类别的类别中选择项目时,它可以工作。但是当我选择没有父项的项目时它不会。例如从横向。
猜你喜欢
  • 2020-04-28
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2019-01-02
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多