2015-09-24 76 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