我在选择查询时遇到了一个相当奇怪的问题。首先让我解释一下我的设置。我有5个表:用户名表,电话表,日期表,链接表和数据表。
我的链接表存储用户名表和数字表中的所有ID,以及与数据表中的数据对应的日期。以下是每个表的示例:
---UserName---ID--- ---Phone-----ID---- ---Date--- ---rate---charges---Phone-----Date---
| Bill Jones 1 | | 123-4567 1 | | 1/1 | | 1.24 10 123-4567 1/1
| Mike Jones 2 | | 456-7895 2 | | 1/2 | | 1.00 5 456-7895 1/1
| 4.56 20 123-4567 1/1
| 5.34 4 123-4567 1/1
链接表如下所示:
---User ID---Phone ID---Date----
1 1 1/1
2 2 1/1
1 1 1/1
1 1 1/1
现在在Access中,当我对用户名,电话号码,日期和数据运行选择查询时,我得到一个设置,其中用户,电话和日期表与链接表,电话表和日期表也与数据表连接。它相应地加入了东西,并且几乎完美无缺,除了我注意到并非所有数据都被选中。在真实表格中,我有495条记录,但是当我运行select查询时,只有417条记录被拉过来。我需要更改Access中的设置或内容吗?为什么只会选择一些记录?这可能是编码其他地方的错误吗?我注意到如果我只是做了一个select all
的数据表,它会超过495条记录,但是一旦我开始加入其他表格,它就会混乱。
这是select语句:
SELECT DATA.[Charges], DATA.[Rate], Date.[ Date], Phone_Master.[ Phone], User_Master.[User Name]
FROM User_Master
INNER JOIN ((Phone_Master
INNER JOIN DATA
ON Phone_Master.[Phone] = Data.[Phone])
INNER JOIN (Date
INNER JOIN Link_table
ON Date.[date] = Link.[date])
ON (Date.[date] = DATA.[date]) AND (Phone_Master.ID = Link.[Phone ID]))
ON User_Master.ID = Link.[Username ID];
这是我在设计视图中加入完成后MS-Access为我创建的确切设置。我只是简单地改变了一些名称以适应我之前的例子。
答案 0 :(得分:0)
您没有有效的数据模型。您的数据表应与包含ID的其他表链接,而不是与您的手机相关联。我想因为你的查询是如此奇怪地生成(连接中的连接)。
为什么链接表中有重复项?
使用空格命名表是一种不好的做法。
这是您编辑的SQL查询:
SELECT DATA.[Charges], DATA.[Rate], Date.[ Date], Phone_Master.[ Phone], User_Master.[User Name]
FROM User_Master
INNER JOIN ((Phone_Master INNER JOIN DATA ON Phone_Master.[Phone] = Data.[Phone])
INNER JOIN (Date INNER JOIN Link_table ON Date.[date] = Link.[date])
ON (Date.[date] = DATA.[date]) AND (Phone_Master.ID = Link.[Phone ID]))
ON User_Master.ID = Link.[Username ID];
我希望你在这里看到一大堆。