【发布时间】:2019-06-09 21:16:38
【问题描述】:
我需要帮助编写 SQL(或逻辑过程)来计算产品过滤器中每个项目的产品。
数据库结构:
products
--------
id|title
attributes
----------
id|title
attributes_values
---------------------
id|value|attribute_id
products_attributes
-------------------
product_id|attributes_value_id
我有带有属性的侧边栏过滤器,我需要获取每个属性的产品计数(过滤器中的行)。问题是计数应该已经受到已经选择的属性的限制。因此,当我选择了任何属性时,所有其他属性也必须计算具有所选属性的产品。
例如:我有两个属性,颜色(蓝色、白色)和材料(金属、木头)。当我选择蓝色时,我需要计算蓝色金属和蓝色木材的产品计数 - 计数的产品必须匹配所有选定的属性。
可以使用任何连接表或外部服务,但我不知道该怎么做,如何改变结构来做到这一点。
DBFiddle:https://www.db-fiddle.com/f/mMeUzm96xb9ZMHZonEktcD/1
感谢您的任何想法。
【问题讨论】:
-
嗨,欢迎来到 stackoverflow。请提供minimal reproducible example,说明您是如何尝试自行解决此问题的。该社区旨在帮助人们学习,而不是提供免费的编码服务。
-
Eg: I have two properties, color (blue, white) and material (metal, wood).attributes_values的数据库中的这些在哪里?一些示例数据甚至 DBFiddle 都会有所帮助。 -
感觉你有很多
attributes表,例如你可以组合attributes_values和products_attributes,但我仍然没有可以查找“颜色”或“的键”材料”。我会做类似id|product_id|key|value之类的事情。此外,表格attributes的用途尚不清楚。看一张桌子,因为我建议在products.id=products_attributes.product_idWHEREattr_key="color"和attr_value="blue"上加入products_attributes很简单(请注意key是保留字) -
没有预期结果的小提琴并不是非常有用
-
我不知道如何查询得到这个结果,所以想要的结果只在fiddle的评论中。 db-fiddle.com/f/mMeUzm96xb9ZMHZonEktcD/2