如何在MS ACCESS的另一个表中列出一个表中不包含特定字符串的所有属性

问题描述

我想列出PolicyID表中的所有Policy,但包含PolicyID的{​​{1}}除外。 有3个表:

jewels

1.Policy (PolicyID) 2.ContentGroup(ContentGroupID,Description) 3.ContentItem(PolicyID,ContentGroupID) 中包含“ Description” 这是我的代码

jewels

运行代码时,我仍然显示所有包含SELECT A.PolicyID,A.EffectiveFromDate,A.PropertyId FROM (Policy AS A INNER JOIN ContentItem AS C ON A.PolicyID = C.PolicyID) INNER JOIN ContentGroup as G ON C.ContentGroupID = G.ContentGroupID WHERE NOT G.Description IN (SELECT Description FROM ContentGroup as G WHERE G.Description Like "jewels") GROUP BY A.PolicyID,A.PropertyId; 的策略。而且我尝试了一些其他方法,例如jewelsNot like!=,但它似乎不适用于MS访问

解决方法

我猜您想使用HAVING子句进行聚合:

SELECT P.PolicyID,P.EffectiveFromDate,P.PropertyId
FROM (Policy AS P INNER JOIN
      ContentItem AS C
      ON P.PolicyID = CI.PolicyID
     ) INNER JOIN
     ContentGroup as G 
     ON CG.ContentGroupID = CG.ContentGroupID
GROUP BY A.PolicyID,A.EffectiveFromDate,A.PropertyId
HAVING SUM(IIF(CG.Description Like "jewels",1,0)) = 0;

HAVING子句计算每个组中具有"jewels"描述的行数。 = 0表示没有。