我的电子商务网站上有产品过滤器。产品有许多ProductProperties,它们属于Properties(基本属性类型)(Spree DB schema)。
属性为:“brand”,“product_type”,“collection_status”和“collection_season”。用户可以使用复选框(每个过滤器的多个值)过滤每个过滤器,因此他可以选择“品牌'袜子'或'衬衫'的品牌'lacoste'或'fred perry'”。
这个逻辑对我来说很难理解。我很困惑:我可以在一个SQL查询中执行搜索吗?这个查询有意义吗?
SELECT COUNT(DISTINCT "spree_products"."id") FROM "spree_products"
LEFT OUTER JOIN "spree_product_properties" ON "spree_product_properties"."product_id" = "spree_products"."id"
WHERE
("spree_product_properties"."value" in ('lacoste', 'fred perry') AND "spree_product_properties"."property_id" = 161337574)
AND
("spree_product_properties"."value" in ('socks', 'shirts') AND "spree_product_properties"."property_id" = 905834903)
我可以看到,asos在类似情况下执行多步搜索。
更新:上面的查询会产生错误的搜索结果。如果您愿意,可以在沙盒中试用。
答案 0 :(得分:1)
使用spree框架进行分析项目时,我使用Looker中的现有LookML模板。这样我就不会编写手动查询,Looker知道它生成查询的模式。
My template for spree涵盖了基本的狂欢安装。
如果您计划将Spree与其他第三方工具集成,那么您只需要扩展模型。