Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接两个表并显示所有记录_Sql_Ms Access_Ms Access 2013 - Fatal编程技术网

Sql 连接两个表并显示所有记录

Sql 连接两个表并显示所有记录,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

我在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日更换OW605
有人能纠正我的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;