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