2012-03-01 81 views
1

http://imgur.com/uzPGs個人ID#與多對多關係中的兩條記錄Access 2007

上面是我的模式的屏幕截圖。

訪問表有一個個人ID號列表,ICD是與某個人有關的代碼列表。您可以從交接表中看到,Visits和ICDTable之間存在多對多關係。我試圖做一個查詢,允許一個人在ICDTable中鍵入兩條記錄,並且只有當一個人擁有這兩個記錄時才返回訪問ID#。我試圖從之前的一個查詢中修改這個,但我無法弄清楚發生了什麼。查詢本身並不「失敗」,因爲它允許我搜索一些內容,但顯然是錯誤的。我錯過了什麼?格拉西亞斯。

SELECT Visits.ID, Inf.desc, Sore.desc 
FROM tblKentuckyCounties 
INNER JOIN 
(
    ICDTable AS Inf 
    INNER JOIN 
    (
     (
      (
       Visits 
       INNER JOIN ICDTable AS InfVisits 
        ON Visits.ID=InfVisits.VisitsID 
      ) 
      INNER JOIN ICDTable AS SoreVisits 
       ON Visits.ID=SoreVisits.ID 
     ) 
     INNER JOIN ICDTable AS Sore 
      ON SoreVisits.ICD_IDFK=Sore.ID 
    ) ON Inf.ID=Visits.ICD_IDFK 
) 
    ON tblKentuckyCounties.ID=Visits.County 
WHERE Inf.desc=[enter first term] 
    AND Sore.desc=[enter second term] 

感謝您的編輯。

好的,所以我找到了我需要做的事情。下面這段文字是有興趣的人如何做這樣的事情

SELECT DISTINCT Visits.KHA_ID, Visits.totalCharges 
FROM (Visits INNER JOIN (ICDTable INNER JOIN ICDVisitsJxn ON ICDTable.ICD9ID = ICDVisitsJxn.ICD_IDFK) ON Visits.ID = ICDVisitsJxn.VisitsIDFK) INNER JOIN (ICDTable AS ICDTable_1 INNER JOIN ICDVisitsJxn AS ICDVisitsJxn_1 ON ICDTable_1.ICD9ID = ICDVisitsJxn_1.ICD_IDFK) ON Visits.ID = ICDVisitsJxn_1.VisitsIDFK 
WHERE (((ICDTable.Description) Like [enter term]) AND ((ICDTable_1.Description) Like [enter another term])); 
+0

別名被選擇爲清楚起見用最後的查詢。他們真的可以稱爲任何東西。 – wootscootinboogie 2012-03-01 14:34:01

+0

更正,我想它確實失敗。它不會接近我想要的。但我猜,至少可以讓我運行錯誤的查詢。 – wootscootinboogie 2012-03-01 14:37:24

回答

2

您可以將您的查詢到包含子查詢的查詢工作僅ICDVisits和ICDtable(1)。在新的查詢中,您將兩次訪問與此子查詢加入(2)。

(1)

SELECT ICDTable.Description, ICDVisits.VisitsIDFK 
FROM ICDTable INNER JOIN ICDVisits ON ICDTable.ICD9ID = ICDVisits.ICD_IDFK; 

(2)

SELECT Visits.ID 
FROM query1 INNER JOIN (query2 INNER JOIN Visits ON query2.VisitsIDFK = Visits.ID) ON 
query1.VisitsIDFK = Visits.ID 
WHERE (((query1.Description) Like 'a') AND ((query2.Description) Like 'b')); 

(查詢1 & 2是所述連接ICDVisits和ICDTable的)。

忘了提及它:您不必使用ICDVisitsJxn中的ID字段作爲主鍵,只需將VisitsIDFK和ICD_IDFK字段作爲主鍵即可。這將避免重複的條目。

查詢1 & 2(是明顯相同): Query1 & 2

組合查詢:

Combined Query

+0

第一個查詢運行並返回ICD.Description和訪問ID#。但是,第二個查詢不會返回任何結果。 – wootscootinboogie 2012-03-01 17:10:51

+1

這個工作對我來說(給定你的模式),如果表中存在正確的數據。我糾正了命名,使其更易於理解,也許我輸入了錯字。這是現在對我來說確切的說法。我會嘗試上傳查詢的圖片,可能有幫助。 – Christian 2012-03-01 17:25:27

+0

拜託,如果你不介意的話。讓我再試一次,看看發生了什麼。 – wootscootinboogie 2012-03-01 17:29:11

相關問題