Sql Person ID#具有多对多关系的两条记录Access 2007

Sql Person ID#具有多对多关系的两条记录Access 2007,sql,ms-access,Sql,Ms Access,上面是我的模式的屏幕盖 访问表中有一个个人ID号列表,ICD是一个与某个人相关的代码列表。从连接表中可以看出,访问和ICDTable之间存在多对多关系。我正在尝试进行一个查询,允许一个人在ICDTable中键入两条记录,并且只返回访问ID(如果一个人同时拥有这两条记录)。我试图修改我之前写的一个问题,但我不知道发生了什么。查询本身并没有“失败”,因为它允许我搜索一些东西,但它显然是错误的。我错过了什么?格雷西亚斯 SELECT Visits.ID, Inf.desc, Sore.desc FRO

上面是我的模式的屏幕盖

访问表中有一个个人ID号列表,ICD是一个与某个人相关的代码列表。从连接表中可以看出,访问和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]));

您可以将查询划分为仅包含ICDVisits和ICDtable(1)的子查询。在一个新的查询中,您将使用该子查询两次(2)连接访问

(一)

(二)

(查询1和查询2是ICDVisits和ICDTable的联接)

忘了提一下:您不必使用ICDVisitsJxn中的ID字段作为主键,只需将VisitsIDFK和ICD_IDFK字段作为主键即可。这将避免重复条目

查询1和查询2(显然相同):

组合查询:


为了清楚起见,在上次查询中选择了别名。它们真的可以被称为任何东西。更正,我想它确实失败了。这和我想要的不一样。但我想它至少让我运行了一个错误的查询。第一个查询运行并返回ICD.Description和访问ID。但是,第二个查询不返回任何结果。如果表中存在正确的数据,这对我来说是可行的(给定您的架构)。我修改了名字,使它更容易理解,也许我输入了一个拼写错误。这正是对我有效的说法。我会试着上传一张查询的图片,也许会有帮助。如果你不介意的话,请。让我再试一次,看看有什么问题。只是为了澄清一下:您需要根据您的数据编辑部件“(query1.Description)如“a”和“(query2.Description)如“b”,我不知道这是否清楚。在我的ICD表中,有一个描述称为“a”,另一个描述称为“b”。感谢您的帮助,我并没有像您那样解决它,但我让它工作起来了,而您的描述是创新的动力。
SELECT ICDTable.Description, ICDVisits.VisitsIDFK
FROM ICDTable INNER JOIN ICDVisits ON ICDTable.ICD9ID = ICDVisits.ICD_IDFK;
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'));