multiple filters per item
我有一些公寓,客户可以根据一些参数选择。
例如:
他正在找一套公寓,有:
这些参数保存在表格中(称为
1 2 | id (INDEX) | apartmentID | filterID | filterOptionID ---------------------------------------------------------------------- |
何处
现在。。。我需要尝试创建一个选择查询来搜索与参数匹配的公寓。它在一个参数下工作得很好,但是一旦有第二个参数出现,它就会失效。我明白原因:
1 2 3 4 5 | 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 |
显然,上面的两个参数不起作用-因为filterid列不能同时为1和2….
那么,是否有人能指导我如何加入这个过滤器表,以便能够为参数请求找到一个或多个匹配项?
非常感谢!
你可以用它来写一些东西,假设你想要有4个房间和1个阳台的公寓。
1 2 3 4 5 6 | 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) |