我正在尝试为电子商务网站实现某些目标,其目的是通过子类别获得结果顺序,但要确保所选特定类别中的所有项目首先显示,而secondaryCategories显示的项目最后显示。
我希望能够将具有相同子类别的所有项目合并到同一部分;这是一个项目,它与secondaryCategories匹配,但也有一个匹配特定类别,这些类别应该在一起。
能够做到这一点生成一个Select ..Union All ..用PHP选择...但是这会使查询变慢,具体取决于生成了多少union和select语句。
我想看看有没有人更好地了解如何做到这一点我得到的最接近的是这个SQL来获得我想要的结果但它仍然没有把所有子类别项目放在一起,如果我把子类别放在第一位那时候,我要查找的特定类别的项目没有出现在列表的顶部,它们与secondaryCategories混在一起。
SELECT myFields FROM items where (category = :category or
FIND_IN_SET(:category,secondaryCATEGORIES)>0)and moreFilters
ORDER BY CASE WHEN Category= :category THEN 1 ELSE 2 END ASC,subcategory ASC
示例数据:
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter2 Adapters Video Adapter Video Adapter3 Network Network Adapters Adapters Adapter4 Audio Audio Adapter Adapters
排序后:
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter2 Adapters Video Adapter Video Adapter4 Audio Audio Adapter Adapters Adapter3 Network Network Adapters Adapters
我想要的是:
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter4 Audio Audio Adapter Adapters Adapter2 Adapters Video Adapter Video Adapter3 Network Network Adapters Adapters
答案 0 :(得分:0)
万一有人想知道同样的问题,我通过在程序中添加一些代码解决了这个问题。
我做的是首先对子类别进行选择和排序,一旦我得到子类别,我就用它来生成SQL查询,使用循环生成“when subcategory = {subcategory_from_query [1]}然后1 subcategory = {subcategory_from_query [2]}然后2,依此类推“
如果添加一个示例PHP代码有助于让我知道,我会发布它。