当前位置:主页>销售管理软件> 列表

求一个左连接插入记录的SQL语句 找服装销售软件

进销存软件版1楼: Access数据库:
a表有 材料编码、材料名称、规格、型号、单位
b表有 材料名称、规格、型号、单位、库存量
现在我想将b表中的所有记录从a表查出其货品编码然后组合成
材料编码、材料名称、规格、型号、单位、库存量
写入 c 表中,但以下的语句不对:

''insert into c(材料编码,材料名称,规格,'' +
''型号,库存量) select b.材料编码,a.材料名称,'' +
''a.规格,a.型号,a.库存量 from (select 材料名称,'' +
''规格,型号,库存量 from a) '' +
''left outer join (select 材料编码,材料名称,规格,型号 '' +
''from b) on a.材料名称=b.材料名称 and '' +
''a.规格=b.规格 and a.型号=b.型号'';

2楼: ''insert into c(材料编码,材料名称,规格,'' +
''型号,库存量) select b.材料编码,a.材料名称,'' +
''a.规格,a.型号,a.库存量 from a '' +
''left outer join b on a.材料名称=b.材料名称 and '' +
''a.规格=b.规格 and a.型号=b.型号''; 如进销存excel表格

3楼: 这样不行。结果只有计划量插到c表中了,如果改为右连接,则除计划量外其它的都能插到c表了。

4楼: 能列下你两个表里的数据对应关系吗

a表有 材料编码、材料名称、规格、型号、单位
b表有 材料名称、规格、型号、单位、库存量

这样插入保证a表的数据全部插入,如果b表有的材料名称 a表没有,无法插入(无编号)

''insert into c(材料编码,材料名称,规格,'' +
''型号,库存量) select a.材料编码,a.材料名称,'' +
''a.规格,a.型号,b.库存量 from a '' +
''left outer join b on a.材料名称=b.材料名称 and '' +
''a.规格=b.规格 and a.型号=b.型号'';

5楼: 是这样的:
a表是一个材料信息的基本表
b表是一个从excel中导入的材料计划表(一个临时中介表,记录导入到c后即清空它),b表只有上面这些字段。导入b的记录可能存在重复的现象。
现在我想从a表中查找b表中每个计划项目的材料编码,判断是否是同一种规格型号的材料只能依靠 a.材料名称=b.材料名称 and a.规格=b.规格 and a.型号=b.型号 这个条件来查找它的编码,然后把组合到的东西插入到c表。
这样我就可以通过c表与库存表比较应采购的差量。
谢谢。

6楼: select distinct a.材料编码,b.材料名称,b.规格,b.型号,b.库存量
from a,b
where a.材料名称=b.材料名称 and a.规格=b.规格 and a.型号=b.型号



列出b中的数据以及从a中查出的编号
(压缩掉了重复记录)

进销存软件版7楼: 这个方法我已经试过了,一条匹配的记录都没有(刚才又试了一遍,结果一样)。但我的试验数据和材料信息表中的记录是一模一样的(不同的是b表有计划数量而已,再就是少几个字段)
如果用left join,能找到记录,只不过只有计划量导进 c 表了,其他各列都是空值。
是不是join的on关键字要连接关键字段啊?

8楼: 汗.....

9楼: 我发现原因了。
因为我这次导入的数据中“型号”的值全部为null,如果把 where 子句中的 a.型号=b.型号 去掉,就可以找到记录了,请问有什么办法不论字段的值是否为空都能返回 a.型号=b.型号 吗?

10楼: Access的帮助中说:
在查询中联接表时,结果只包含匹配字段中不包含 Null 值的记录。

因为我的型号字段中都为null值,所以一个记录都匹配不到?哪位大侠帮我出出主意?

11楼: 没必要啊,如果那个字段为null,那么就从a表里取相应的字段,只要你剩下的条件足够确定唯一的记录

select distinct a.材料编码,b.材料名称,b.规格,a.型号,b.库存量
from a,b
where a.材料名称=b.材料名称 and a.规格=b.规格

12楼: 不一定能确定。确定唯一记录的只有材料编码。
看了Access的帮助,现在已经解决了。非常感谢 anso 一直关注我的问题。能交个朋友吗?
给我个QQ号。

最后的代码是
''insert into 采购计划表(材料编码,材料名称,'' +
''规格,型号,单位,计划量) '' +
''select b.材料编码,a.材料名称,'' +
''a.规格,a.型号,b.单位,a.计划量 '' +
''from '' +
''tmp_goodsPlan a,材料信息表 b '' +
''where a.材料名称=b.材料名称 and '' +
''a.规格 & a.型号 =b.规格 & b.型号'';

就是将规格型号组合起来。按照Access的帮助说法,不论型号的值是null还是空字符串,它都能通过&进行计算,用+是不行的。

再次谢谢 anso. 如服装销售软件

13楼: 48182510,谢谢给分