我有一个类似于以下的表:
REL_Aid_To_AttributeValue:
ID AttributeValueID
101 1319
101 1320
101 1344
101 1345
102 1319
102 1320
102 1321
102 1336
103 1320
103 1336
我有另一个表按类型对这些 AttributeValueID 进行分组:
TBL_AttributeValues:
AttributeValueID AttributeTypeID
1319 1
1320 1
1321 1
1336 2
1344 3
1345 3
我有第三个表,它提供了第一个表中每个 ID 的信息:
TBL_Aids:
ID Title Author etc.
101 Aid About Spiders John Doe
102 Aid About Mites Jane Doe
103 Aid About Beetles Joe Schmo
我想在 AttributeTypeID=1 内返回仅包含 AttributeValueID 1319 或(含)1320 的 ID(以及有关它们的信息,如标题、作者等)的结果。所以我希望返回 101,因为它只有 1319 和 1320 用于 AttributeType 1,还有 103 因为它只有 1320 用于 AttributeType 1。我不想返回 102,因为虽然它有 1319 和 1320,但它也有 1321,这也是 AttributeType 1 。
我尝试了以下方法:
SELECT a.ID, a.Title, c.AttributeTypeID,
COUNT(b.AttributeValueID)AS Total
FROM TBL_Aids as a,
REL_Aid_To_AttributeValue as b,
TBL_AttributeValues as c
WHERE a.ID=b.AidID
AND b.AttributeValueID=c.ID
AND a.Status=2
AND AttributeTypeID=1
AND (b.AttributeValueID=1319
OR b.AttributeValueID=1320)
GROUP BY a.ID, a.Title,
c.AttributeTypeID
HAVING COUNT(b.AttributeValueID) <= 2
但它仍然返回 102 作为结果,因为它已经受到 1319 和 1320 的限制,并且正在计算该总数而不是类型 1 的 AttributeValueID 的总数。我是否需要某种子查询来完成此操作?任何帮助,将不胜感激!非常感谢。