订单表(ORDER):
A 单据,里面有多行:
物品 跟踪号(唯一) 数量
a 001 200
b 002 300
c 003 400
d 004 500系统根据订单生成出库单(out):
A单据记录
a 001 100B单据记录
a 001 100
b 002 300
c 003 400C单据记录
d 004 400
D单据记录
d 004 100系统根据出库生成发票(SALE):
A单据记录
a 001 200
b 002 300
B单据记录
c 003 400
系统根据发票生成收款(SK):
A单据记录
a 001 200
b 002 300
c 003 400
以上是四个表名,如果直接用跟踪号关联起来,会出现最大行数。
比如查001这个跟踪号,订单其实只有一行,显示一行,就好,关联起来后会显示多行相同记录,其他几个表也是,显示多行现在是要解决每种表发生过几行就显示几行,并且左右对应起来,每个表的行数不确定,也不确定是哪个表会比较多比较少。求解,谢谢。
A 单据,里面有多行:
物品 跟踪号(唯一) 数量
a 001 200
b 002 300
c 003 400
d 004 500系统根据订单生成出库单(out):
A单据记录
a 001 100B单据记录
a 001 100
b 002 300
c 003 400C单据记录
d 004 400
D单据记录
d 004 100系统根据出库生成发票(SALE):
A单据记录
a 001 200
b 002 300
B单据记录
c 003 400
系统根据发票生成收款(SK):
A单据记录
a 001 200
b 002 300
c 003 400
以上是四个表名,如果直接用跟踪号关联起来,会出现最大行数。
比如查001这个跟踪号,订单其实只有一行,显示一行,就好,关联起来后会显示多行相同记录,其他几个表也是,显示多行现在是要解决每种表发生过几行就显示几行,并且左右对应起来,每个表的行数不确定,也不确定是哪个表会比较多比较少。求解,谢谢。
对于不确定的因素,利用动态sql拼接查询,参数传对即可;
对于现实多行什么之类问题,弄清楚外连接的特性。。
LEFT OUTER JOIN SALE C ON C.B_NO =B.NO AND C.B_ITEM = B.ITEM
LEFT OUTER JOIN SK D ON D.C_NO =C.NO AND D.C_ITEM = C.ITEM
WHERE
GROUP BY A.PRD_NO,a.no,a.item 大概这个样子,我3年没写SQL了。。