0

我在 Microsoft Access 2013 中有两个表:

tblService

PART_ID SERV_DATE SERV_REMARK  
A0001 2013 年 11 月 1 日 好#1  
A0001 2013 年 11 月 13 日 好#2  
A0001 2013 年 11 月 25 日 好#3

tblWithdraw

PART_ID DRAWN_DATE DRAWN_REASON DRAWN_TO  
A0001 2013 年 11 月 6 日下午 OW601  
A0001 2013 年 11 月 20 日下午 120 点 OW603  
A0001 2013 年 11 月 30 日更换 OW605  

这是我想要的结果:

PART_ID SERV_DATE SERV_REMARK DRAWN_DATE DRAWN_REASON DRAWN_TO  
A0001 2013 年 11 月 1 日良好#1 2013 年 11 月 6 日下午 OW601  
A0001 11/13/2013 好#2 11/20/2013 120 PM OW603  
A0001 2013 年 11 月 25 日良好#3 2013 年 11 月 30 日更换 OW605  

但是我不能用INNER JOIN,RIGHT JOIN也不能得到结果LEFT JOIN。我试过了FULL JOIN,但系统提示我错误:

FROM 子句中的语法错误

下面是我的 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.PART_ID=W.PART_ID;

结果显示为:

PART_ID SERV_DATE SERV_REMARK DRAWN_DATE DRAWN_REASON DRAWN_TO  
 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 PM OW603  
 A0001 11/13/2013 好#2 11/20/2013 120 PM OW603  
 A0001 11/25/2013 好#3 11/20/2013 120 PM 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 吗?或者任何指向正确代码的链接?谢谢!

4

1 回答 1

0

您的两张表之间没有唯一的关系,您需要一张。例如,您将不得不重组您的表格(以及如何将数据输入到表格中),以便它们具有一个值,该值使零件的每个实例与其他具有相同PART_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;

这将给出您正在寻找的结果。

于 2013-11-15T18:11:34.167 回答