关于在我正在整理的电子商务套餐中展示产品的方法,我有一个简单的问题。我面临的问题是,我希望网站访问者缩小他们的搜索范围。
例如,一个用例是:
问题,我面临的是,为了找到符合所有这三个因素的产品,做一个单独的SQL查询(所以产品在夏季系列中,是一条裤子,由衣服丰富制作)。使这个过于困难的事情是产品可以分为多个类别和季节。所以需要一个疯狂的数量加入才能获得正确的结果。
我的数据库结构如下:
product -> product_category <- category
product -> product_season <- season
product <- brand (a product can only be made by one brand)
希望有人可以分享他们的智慧...
答案 0 :(得分:1)
如果您有一个大目录,最好使用Apache Solr(http://lucene.apache.org/solr/)。否则,有一些方法。
你不需要开销和直接SQL不是那么疯狂,会表现得相当不错:
SELECT product.*
FROM product
LEFT JOIN product_category
LEFT JOIN category
LEFT JOIN product_season
LEFT JOIN season
WHERE season = ? AND category = ?
或者,如果您不喜欢返回的行数,可以将类别和季节聚合到产品表(新列)中,然后使用类似查询来查找内容:
SELECT product.*
FROM product
where product.categories like '% category %'
and product.seasons like '% season %'
答案 1 :(得分:0)
Select product.* From product
Left Join product_category On (product.product_id = product_category.product_id)
Left Join product_season On (product.product_id= product_season.product_id)
Left Join brand On (product.product_id = brand.product_id)
Where product_category.category_id = '$catId'
And product_season.season_id = '$seasonId'
And brand.brand_id = '$brandId'
Order By product.product_name
好的,假设product
,product_category
,product_season
,brand
,season
,category
都是表。您应该直接从您使用的任何内容传递season
和category
表的ID来过滤搜索,这样您就不必加入这些表。