搜索查询中的唯一记录,包括多对一子查询

时间:2015-09-24 18:37:51

标签: ms-access search duplicates unique

第一次发布海报并热心访问新手。

我有一个基于Allen Browne在vba(http://allenbrowne.com/ser-62.html)精彩搜索的搜索屏幕。这对我的大部分目的都有用,但现在子表正在复制记录。

我们的客户(提供商)可以注册多个计划。我们有四个人。我想要一个搜索,让我按提供者类型过滤,但是当提供者注册多个提供者类型时,不会创建重复记录。在示例图像中,carmen titus在LEHRC和fccn程序中,因此出现两次。试图发布图片,但没有骰子。

请帮忙!我努力搜索,无法找到解决方案。我很感激支持或指向相关的帖子。我希望这是有道理的。我认为,作为一名训练有素的新手,我的一半战斗并不了解术语。

1 个答案:

答案 0 :(得分:0)

我们需要更多信息!

听起来您基于搜索的查询包含两个表中具有一对多关系的列,即客户端和"客户端程序",使得单个客户端具有0到4个程序。

听起来你只想返回一个提供者列表(即一边的行),但你的SQL正在从两个表中返回数据。

这是SQL可能需要看起来像你需要的东西:

SELECT * 
FROM clients AS mainClient
WHERE 
EXISTS 
(SELECT 1
   FROM clients  AS C
        LEFT JOIN ClientPrograms  AS CP
        ON C.ID = CP.ClientID
   WHERE mainClient.ID = C.ID       
        ' the above line links the EXISTS "Sub query" to the main query
     AND client name like "*j*" ... etc...
         ... ie lots of criteria generated by you popup search criteria dialogue)
)

通过添加EXISTS语句,主查询将是可编辑的。

如果您使用了以下SQL,则无法对其进行编辑

SELECT c.name, c.dob, etc.. ie all the field you want on the form whichwill all be from the client table
   FROM clients  AS C
        LEFT JOIN ClientPrograms  AS CP
        ON C.ID = CP.ClientID
   WHERE mainClient.ID = C.ID       
        ' the above line links the EXISTS "Sub query" to the main query
     AND client name like "*j*" ... etc...
         ... ie lots of criteria generated by you popup search criteria dialogue)
GROUP BY all the field in the select statement 

我希望这会给你一些灵感