我有一个查询,向我显示一个查询中所有商机的列表
我有一个查询向我展示了排除机会列表,我们要从结果中消除这些机会
我需要生成一个查询,它将从第一个查询减去第二个查询...
SELECT DISTINCT qryMissedOpportunity_ALL_Clients.*
FROM qryMissedOpportunity_ALL_Clients INNER JOIN qryMissedOpportunity_Exclusions ON
([qryMissedOpportunity_ALL_Clients].[ClientID] <> [qryMissedOpportunity_Exclusions].[ClientID])
AND
([qryMissedOpportunity_Exclusions].[ClientID] <> [qryMissedOpportunity_Exclusions].[BillingCode])
初始查询按预期工作,并且排除成功列出了所有匹配,但是当我使用上述查询时,我得到完整列表,这显然是错误的。任何提示将不胜感激。
编辑 - 两个原始查询
qryMissedOpportunity_ALL_Clients(1)
SELECT MissedOpportunities.MOID, PriceList.BillingCode, Client.ClientID, Client.ClientName, PriceList.WorkDescription, PriceList.UnitOfWork, MissedOpportunities.Qty, PriceList.CostPerUnit AS Our_PriceList_Cost, ([MissedOpportunities].[Qty]*[PriceList].[CostPerUnit]) AS At_Cost, MissedOpportunities.fBegin
FROM PriceList INNER JOIN (Client INNER JOIN MissedOpportunities ON Client.ClientID = MissedOpportunities.ClientID) ON PriceList.BillingCode = MissedOpportunities.BillingCode
WHERE (((MissedOpportunities.fBegin)=#10/1/2009#));
qryMissedOpportunity_Exclusions
SELECT qryMissedOpportunity_ALL_Clients.*, MissedOpportunity_Exclusions.Exclusion, MissedOpportunity_Exclusions.Comments
FROM qryMissedOpportunity_ALL_Clients INNER JOIN MissedOpportunity_Exclusions ON (qryMissedOpportunity_ALL_Clients.BillingCode = MissedOpportunity_Exclusions.BillingCode) AND (qryMissedOpportunity_ALL_Clients.ClientID = MissedOpportunity_Exclusions.ClientID)
WHERE (((MissedOpportunity_Exclusions.Exclusion)=True));
一个群体需要看到一切,另一个群体需要看到他们没有被视为“有效”错失机会的东西,我们已经看到了它,验证了它的原因,并且不需要每个人都需要批评它单月。
答案 0 :(得分:2)
查看您的查询被重写以使用表别名,以便我可以阅读...
SELECT DISTINCT c.*
FROM qryMissedOpportunity_ALL_Clients c
JOIN qryMissedOpportunity_Exclusions e
ON c.ClientID <> e.ClientID
AND e.ClientID <> e.BillingCode
此查询将生成各种类型的笛卡尔积... qryMissedOpportunity_ALL_Clients
中的每一行都将与qryMissedOpportunity_Exclusions
中的每一行匹配并加入,其中ClientID 不会{ em> 匹配......这是你想要的吗?通常,连接条件基于一个表中的列等于另一个表中的列的值...加入它们不相等的位置是不常见的......
其次,连接条件中的第二个不等式是 相同 表中的列之间(qryMissedOpportunity_Exclusions表)您确定这是您想要的吗?如果是,则它不是连接条件,它是Where子句条件......
其次,您的问题提到了两个查询,但在您的问题中只有一个查询(上图)。第二个在哪里?
答案 1 :(得分:2)
通常,您可以通过执行左连接并与null进行比较来排除表:
SELECT t1.* FROM t1 LEFT JOIN t2 on t1.id = t2.id where t2.id is null;
根据你的情况应该很容易采用这个。