不知道如何问这个有意义,但我正在尝试进行如下查询:
SELECT * FROM PAGES PAGE_FILTERS中存在附加记录,并且该记录的FilterTypeID为22,并且PAGE_FILTERS中存在另一个附加记录,表示相同的页面ID,并且该记录的过滤器类型ID为27。
我有这样的结构:
PAGES table PageID PageName 1 Page 1 2 Page 2 3 Page 3 PAGE_FILTERS table PageID FilterTypeID FilterValueID 1 22 1 1 27 2 2 22 0 2 24 1 3 22 1 3 27 1 3 28 2
因此,如果FilterTypeID为22和27,则我的查询应该返回PageID的1和3.自22次匹配后没有被选中,但是没有匹配FilterTypeID 27的记录。
匹配,即使有额外的过滤器。
换句话说,我知道页面必须具有哪些过滤器类型,并且我需要获得每个页面都具有所有必需类型的页面。
如果更有意义,我不反对更改数据库结构,但每个页面可能没有附加任何,一个或多个过滤器集。
答案 0 :(得分:0)
SELECT p.*
FROM pages p
JOIN PAGE_FILTERS pf
ON p.PageID = pf.PageID
AND pf.FilterTypeID IN (22,27)
GROUP BY p.PageID
HAVING COUNT(DISTINCT pf.FilterTypeID) = 2