【发布时间】:2020-11-08 14:50:08
【问题描述】:
有一个车辆搜索系统,用户可以选择他们选择的汽车,并提供许多过滤选项,如品牌、型号、颜色、安全气囊、空调等功能。有用于选择品牌、型号的下拉菜单,而功能显示为复选框。还有一个字段显示符合该标准的汽车总数。假设一开始有 100 辆汽车。当用户选择品牌为 BMW 时,计数会更新为 47。现在,如果用户再次点击安全气囊(BMW + 安全气囊),则总数会更新。
功能总数为 90。我正在使用 PostgreSql,所有功能都存在于一个表中。我想构建一个动态查询,它应该根据用户的偏好过滤数据。我的方法是为所有 90 个功能设置过滤条件,并将用户选择作为参数传递给 PostgreSql 函数。
select count(vehicle_id)
from vehicles
where brand in(...,...,...)
and flag_airbag in(..,..)
and flag_airconditioner in(..,..)
and ....
and .....
我相信应该有更好的方法来实现这一点。任何建议表示赞赏。 谢谢。
【问题讨论】:
-
你的做法很合理。您只需要在未选择选项时小心 - 用
in表示“全部”相当棘手。
标签: sql postgresql