【发布时间】:2018-04-18 17:19:15
【问题描述】:
我想要实现的是产品过滤器,即:
- 列出所有标签类别
- 列出每个类别中的所有标签
- 在选择标签时,它会过滤产品列表,使组内的标签之间存在 OR 关系,不同组的标签之间存在 AND 关系。此查询已完成。
- 选择一个或多个过滤器后,它会显示选择该过滤器将添加到产品列表中的产品数量。除了查询每个标签的产品数量之外,我真的不知道如何实现这一点,但这会引发一个我希望避免的 n+1 问题。
我想要的一个例子:
假设我有两个标签类别,颜色和大小。它们有多个标签,颜色有红色、绿色和蓝色;大小分别为小、中、大。
- 当用户选择红色和蓝色时,我想列出红色或蓝色的产品。 (如我所说,此产品查询已完成)
- 我还想列出所有标签。对于颜色,我检查了红色和蓝色,但对于绿色,我需要列出有多少绿色产品。对于尺寸,我需要列出中号、大号和小号;以及每种尺寸有多少红色或蓝色产品。 如何编写此查询?
编辑: 我想要的基本上是Newegg左侧的产品过滤器: https://www.newegg.com/Product/ProductList.aspx?Submit=ENE&IsNodeId=1&N=100163729
【问题讨论】:
-
请以表格形式提供样本数据和所需结果。
-
如前所述,这个问题似乎含糊不清。一些示例数据将有助于了解您的需求。
-
我想要的正是这个:newegg.com/Product/… - 基本上是左边的产品过滤器。
-
在电子商务中这称为分面搜索。这些产品对数据库后端的要求很高。有完整的数据处理层只是为了处理这种功能。不要以为您会在 stackoverflow 中找到实际应用程序的(综合)答案。完全商业化、昂贵的产品就是为了解决这个问题而开发的。
-
@nXu 这个问题是几个月前问的,现在你有几个答案,也许是时候决定哪一个是最好的答案,或者如果它们都不是那么一些 cmets在他们身上解释为什么这些不是您正在寻找的答案。