【发布时间】:2013-09-06 20:21:46
【问题描述】:
我有一个使用邻接列表方法的数据库来处理产品分类,其中一种产品可能在许多类别中找到。看看下面的数据库布局:
cats
id parent title desc
1 0 top top level
2 1 Electronics
3 2 Gaming
4 2 Computers
5 4 Tablets
6 1 Food
7 3 Xbox
products
id title qty
1 ToshibaTV 5
2 I-PAD2 9
3 Laser Pen 24
4 Asus Notebook 5
cats_products
id product_id cat_id
1 2 3
2 2 5
3 1 2
4 3 2
5 4 4
在上面的示例中,我需要一个 SQL 查询,它能够检索在 Electronics 类别中找到的所有产品以及它的任何级别的任何子类别(例如 Xbox,它不是直接子类别)的电子产品)没有重复出现在 I-PAD2 等多个类别中的产品。
我可以在 PHP 中的应用程序的帮助下做到这一点,但我想知道是否可以只使用 MySQL 中的纯 sql 来做到这一点?
【问题讨论】:
-
您可能希望查看用于存储类别层次结构的嵌套集模型,然后只需找到该项目所属的所有类别并找到每个 mikehillyer.com/articles/managing-hierarchical-data-in-mysql 的子类别
-
@Mike 这是一个非常好的评论,我认为您应该将其表述为一个答案,这样您就可以因提供合理的资源来处理该问题而获得适当的奖励:)
-
@Mike 教程很好,但是它处理类别产品关系是一对多而不是多对多!
-
@sємsєм 您能否根据您提供的数据样本向我们展示预期结果?
标签: php mysql sql many-to-many