如何防止访问2007中的重复行

时间:2012-04-23 07:40:40

标签: ms-access duplicates

现在我正在使用三个表,A,B和C:

表结构: ID, 名称, 年龄

B表结构: ID, A.ID->外键, 医院名称

C表结构: ID, A.ID->外键, 药物名称

所以A和B之间的关系是一对多,也与A和C

相同

当我进行任何查询以查找我的数据库中有多少人时,我发现了重复的行 实际上它没有重复,但它有例如2行与子表一样:一个人在表B中有2条记录,因此结果不反映匹配记录的实际数量,因为它与子表链接。

问题是:如果在这种情况下如何防止重复?

1 个答案:

答案 0 :(得分:0)

您可以使用Distinct或子查询。

SELECT DISTINCT a.ID, a.Name
FROM a
INNER JOIN b
ON a.ID = b.aID
WHERE b.Hospital = 123

WHERE b.Hospital IN ( 123, 456 )

另外

SELECT a.ID, a.Name
FROM a
INNER JOIN (SELECT aID, Hospital FROM b) x
ON a.ID = x.aID
WHERE x.Hospital - 123

SELECT a.ID, a.Name
FROM a
WHERE a.ID 
IN ((SELECT aID FROM b WHERE Hospital = 123))