2015-09-24 46 views
0

第一次海报和热心访问新手。搜索查询中的唯一记录,包括多对一的子查询

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

我们的客户(提供商),可以注册在多个程序。我们有四个。我想要一个让我按提供者类型过滤的搜索,但是当提供者注册到多个提供者类型时,不会创建重复记录。在示例图片中,卡门titus位于LEHRC和fccn程序中,因此显示两次。试图张贴图片,但没有骰子。

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

回答

0

我们需要更多信息!

这听起来像是基于搜索的查询包含两个表中具有一对多关系(即客户端和“客户端程序”)的列,使得单个客户端具有零至四个程序。

这听起来像你只想返回提供者列表(即一侧的行),但你的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 

我希望这给你一些启示

+0

谢谢你这么多的灵感。我会破解并报告回来。非常感谢, –

+0

你是否得到它的工作?如果是这样,你可以标记我的答案作为答案,向上箭头它... ...。 – HarveyFrench

+0

您是否觉得上述有用?如果是这样,请举出答案。 – HarveyFrench