access数据库多表select 联接的问题(50)

  • 主题发起人 主题发起人 aynes
  • 开始时间 开始时间
A

aynes

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有表零件表 A品名 库存量 11 3022 30 33 30 44 30 入库表 B品名 入库数量 入库时间11 10 2010-07-1011 5 2010-08-0111 3 2010-07-2022 4 2010-07-1022 5 2010-08-01出库表 C品名 出库数量 出库时间11 5 2010-07-1511 6 2010-08-2033 5 2010-07-2033 5 2010-08-0133 6 2010-08-06每个表之间的联系是 品名想要得到的结果是品名 入库量 入库时间 出库量 出库时间11  10  2010-07-10 5   2010-07-1511  5   2010-08-01 6   2010-08-2011  3   2010-07-10 22  4   2010-07-1022  5   2010-08-0133           5  2010-07-2033           5  2010-08-01  33           6  2010-08-0644我现在的语名是 select a1.品名,a1.入库数量,a1.入库时间,a2.出库数量,a2.出库时间 from ( select a.品名,b.入库数量,b.入库时间 from a left join b on a.品名=b.品名 ) a1 left join ( select a.品名,c.出库数量,c.出库时间 from a left join c on a.品名=c.品名 ) a2 on a1.品名=a2.品名 得出的结果却是 品名 22,33,44是正确的 11显示的不对,结果如下品名 入库量 入库时间 出库量 出库时间11  3  2010-07-10 5   2010-07-1511  3  2010-07-10 6   2010-08-2011  5  2010-08-01 5   2010-07-1511  5  2010-08-01 6   2010-08-2011  10  2010-07-10 5   2010-07-1511  10  2010-07-10 6   2010-08-20
 
最终结果,只要象下面这样,将某些商品的出入库记录罗列出来即可,出入库不用一一对应品名 入库量 入库时间 出库量 出库时间11  10  2010-07-10 5   2010-07-1511  5   2010-08-01 6   2010-08-2011  3   2010-07-10 22  4   2010-07-1022  5   2010-08-0133           5  2010-07-2033           5  2010-08-01  33           6  2010-08-06
 
首先你写的语句肯定不正确。你做链接了,只有品名相同的才会连接上,22.33.44自然没有了。
 
如果按我写的出来的结果就是品名 入库量 入库时间 出库量 出库时间11  3  2010-07-10 5   2010-07-1511  3  2010-07-10 6   2010-08-2011  5  2010-08-01 5   2010-07-1511  5  2010-08-01 6   2010-08-2011  10  2010-07-10 5   2010-07-1511  10  2010-07-10 6   2010-08-20 22  4   2010-07-1022  5   2010-08-0133           5  2010-07-2033           5  2010-08-01  33           6  2010-08-06
 
可以的,但效率很低,以下SQL你可以试一下,如果可以,你再关联A表Select B2.品名 AS 品名B, B2.入库数量, B2.入库时间, C2.品名 AS 品名B, C2.出库数量, C2.出库时间FROM (select 品名, 入库数量, 入库时间, (Select count(*) as X From B AS Z where Z.品名=B.品名 AND Z.入库时间<=B.入库时间)as Index from B) B2 FULL JOIN (select 品名, 出库数量, 出库时间, (Select count(*) as X From C AS Z where Z.品名=C.品名 AND Z.出库时间<=C.出库时间) as Index from C) C2 ON B2.品名 = C2.品名 and B2.Index=C2.Index
 
Access里面Full join 好像不可以,参考http://access911.net/fixhtm/71FAB21E14DCEFF3.htm?tt=通过这个实现B2,C2的全连接,然后将结果和A关联
 
后退
顶部