2012-12-29 103 views
0

我在產品上使用過濾器的電子商務網站。產品具有許多ProductProperties,它們屬於屬性(基本屬性類型)(Spree數據庫模式)。通過多選方面進行搜索

屬性有:「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

您想要針對多個屬性查詢產品,並且您還提供了SQL查詢以實現該目的?這裏有什麼問題?你需要進一步解釋你的最後一句話。 –

+0

對不起,在最後一句話中,我決定刪除它。實際上,這個SQL查詢是由我編寫的,它不會產生我想要的結果。 –

回答

1

在使用分析項目的熱潮框架時,我使用Looker中的現有LookML模板。這樣我就不寫手工查詢,Looker知道它產生查詢的模式。

My template for spree涵蓋了基本的熱潮安裝。

如果您打算將Spree與其他第三方工具集成,那麼您只需要擴展該模型。