Sql 连接两个表并显示所有记录
我在Microsoft Access 2013中有两个表: TBL服务 PART_ID SERV_DATE SERV_REMARK A0001 11/1/2013 GOOD#1 A0001 11/13/2013 GOOD#2 A0001 11/25/2013 GOOD#3 其结果如下所示: PART_ID SERV_DATE SERV_REMARK DRAWN_DATE DRAWN_REASON DRAWN_TO A0001 11/1/2013 GOOD#1 11/6/2013 PM OW601 A0001 11/13/2013 GOOD#2 11/6/2013 PM OW601 A0001 11/25/2013 GOOD#3 11/6/2013 PM OW601 A0001 11/1/2013 GOOD#1 11/20/2013 120 PM OW603 A0001 11/13/2013 GOOD#2 11/20/2013 120 PM OW603 A0001 11/25/2013 GOOD#3 11/20/2013 120 PM OW603 A0001 11/1/2013 GOOD#1 11/30/2013 REPLACEMENT OW605 A0001 11/13/2013 GOOD#2 11/30/2013 REPLACEMENT OW605 A0001 11/25/2013 GOOD#3 11/30/2013 REPLACEMENT OW605 零件ID服务日期服务备注提取日期提取原因提取 A0001 2013年11月1日良好#1 2013年11月6日下午OW601 A0001 2013年11月13日良好#2 2013年11月6日下午OW601 A0001 2013年11月25日良好#3 2013年11月6日下午OW601 A0001 11/1/2013良好#1 11/20/2013 120下午OW603 A0001 2013年11月13日良好#2 2013年11月20日中午120时OW603 A0001 2013年11月25日良好#3 2013年11月20日120下午OW603 A0001 2013年11月1日良好#1 2013年11月30日更换OW605 A0001 2013年11月13日良好#2 2013年11月30日更换OW605 A0001 2013年11月25日良好#3 2013年11月30日更换OW605Sql 连接两个表并显示所有记录,sql,ms-access,ms-access-2013,Sql,Ms Access,Ms Access 2013,我在Microsoft Access 2013中有两个表: TBL服务 PART_ID SERV_DATE SERV_REMARK A0001 11/1/2013 GOOD#1 A0001 11/13/2013 GOOD#2 A0001 11/25/2013 GOOD#3 其结果如下所示: PART_ID SERV_DATE SERV_REMARK DRAWN_DATE DRAWN_REASON DRAWN_TO A0001 11/1
有人能纠正我的SQL吗?或者任何指向正确代码的链接?谢谢 您的两个表之间没有唯一的关系,您需要一个。例如,您必须重新构造表(以及如何将数据输入到表中),以便它们具有一个值,使零件的每个实例都具有相同的
零件ID
例如:
UID PART_ID SERV_DATE SERV_REMARK
1 A0001 11/1/2013 GOOD#1
2 A0001 11/13/2013 GOOD#2
3 A0001 11/25/2013 GOOD#3
UID PART_ID DRAWN_DATE DRAWN_REASON DRAWN_TO
1 A0001 11/6/2013 PM OW601
2 A0001 11/20/2013 120 PM OW603
3 A0001 11/30/2013 REPLACEMENT OW605
然后,您可以将SQL修改为:
SELECT
S.PART_ID, SERV_DATE,
SERV_REMARK, DRAWN_DATE,
DRAWN_REASON, DRAWN_TO
FROM
tblService AS S
RIGHT JOIN
tblWithdraw AS W
ON
S.UID=W.UID;
这将给出您想要的结果。您如何加入这些记录以获得预期结果?请用简单的英语解释。tblService和tblWithdraw之间有什么关系?两个表中都没有生成所需联接结果的外键。其目的似乎是将tblService中的给定行与tblWithdraw中的行连接起来,tblWithdraw中的行的绘制日期最早出现在tblService行中的SERV_日期之后;对吗?还有,这是什么样的SQL语言?我同意Aaron的观点。因为Part_ID在所有行中都是相同的,所以您需要一些使它们唯一的东西来加入它们。嗨!亚伦。谢谢你的回复。我是MS Access和SQL的新手。我学习了互联网上的例子,并尝试在我的项目中应用。如果我不理解你的帖子,我很抱歉。你是对的,在我的项目中,零件将在取出之前进行维修。交易表单最终将显示所有信息。因此,我必须创建一个查询来连接两个表中的所有信息。但是我不能得到正确的结果。谷歌搜索后,我认为微软Access使用Access Jet-SQL.Hi!莫斯蒂。谢谢你的回复。如果我没有说清楚,我很抱歉。我没有得到预期的结果。我已经重新发布了我对这个问题的结果。嗨,Solipcyst。谢谢你的回复。我已经测试了你的答案。它在这个问题上起作用。然而,这不是我想要的答案。我在上发布了一个新问题,如果你有空,请看一看。谢谢你的时间。我知道这可能不是你新问题的答案,但如果这是这个问题的答案,我希望你能给我一个分数。谢谢 PART_ID SERV_DATE SERV_REMARK DRAWN_DATE DRAWN_REASON DRAWN_TO A0001 11/1/2013 GOOD#1 11/6/2013 PM OW601 A0001 11/13/2013 GOOD#2 11/6/2013 PM OW601 A0001 11/25/2013 GOOD#3 11/6/2013 PM OW601 A0001 11/1/2013 GOOD#1 11/20/2013 120 PM OW603 A0001 11/13/2013 GOOD#2 11/20/2013 120 PM OW603 A0001 11/25/2013 GOOD#3 11/20/2013 120 PM OW603 A0001 11/1/2013 GOOD#1 11/30/2013 REPLACEMENT OW605 A0001 11/13/2013 GOOD#2 11/30/2013 REPLACEMENT OW605 A0001 11/25/2013 GOOD#3 11/30/2013 REPLACEMENT OW605
UID PART_ID SERV_DATE SERV_REMARK
1 A0001 11/1/2013 GOOD#1
2 A0001 11/13/2013 GOOD#2
3 A0001 11/25/2013 GOOD#3
UID PART_ID DRAWN_DATE DRAWN_REASON DRAWN_TO
1 A0001 11/6/2013 PM OW601
2 A0001 11/20/2013 120 PM OW603
3 A0001 11/30/2013 REPLACEMENT OW605
SELECT
S.PART_ID, SERV_DATE,
SERV_REMARK, DRAWN_DATE,
DRAWN_REASON, DRAWN_TO
FROM
tblService AS S
RIGHT JOIN
tblWithdraw AS W
ON
S.UID=W.UID;