[英]multiple filters per item
我有一些公寓可供客户选择-根据一些参数。
例如:
他正在寻找有以下设施的公寓:
这些参数按如下方式保存在表中(称为tblApartmentFilters
):
id (index) | apartmentID | filterID | filterOptionID
----------------------------------------------------------------------
哪里-
tblApartments
表中的apartmentID匹配 filterID
定义了保存在tblFilters
的问题(例如:您想要几个房间?还是您想要一个阳台) filterOptionID
代表对其中一个问题的答案。 因此,在上面的示例中-它是filterOptionID#7,它是[4个房间]或项目#18,它是[是-需要阳台] 现在...我需要尝试创建一个SELECT查询来搜索与参数匹配的公寓。 它与一个参数一起使用时效果很好-但第二个参数出现后-就会失败。 我明白为什么:
SELECT * FROM tblApartments
INNER JOIN tblApartmentFilters ON tblApartments.aptID = tblApartmentFilters.aptID
WHERE active = 1
AND filterID = 1 AND filterOptionID = 7 -- this is for the 4 rooms
AND filterID = 2 AND filterOptionID = 18 -- this is for the balcony
现在显然上述内容不适用于2个参数-因为filterID列不能同时为1和2。
因此,有人可以指导我如何加入此过滤器表,以便能够为参数请求找到一个或多个匹配项吗?
提前谢谢了!
您可以使用EXISTS编写一些内容,假设您想要同时拥有4个房间和1个阳台的公寓。
SELECT * FROM tblApartments t
WHERE active = 1
AND EXISTS (SELECT f.aptID FROM tblApartmentFilters f
WHERE f.filterID = 1 AND f.filterOptionID = 7 AND f.aptID = t.aptID)
AND EXISTS (SELECT f.aptID FROM tblApartmentFilters f
WHERE f.filterID = 2 AND f.filterOptionID = 18 AND f.aptID = t.aptID)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.