以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这个SQL 怎么改到FT里能用啊? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=57678) |
-- 作者:jiskin -- 发布时间:2014/9/29 9:49:00 -- [求助]这个SQL 怎么改到FT里能用啊? with c as ( select * from BOM结构 where 子零件编号 = \'15010003\' union all select a.* from BOM结构 as a join c on a.父零件编号 = c.子零件编号 ) select * from c 在SQL里测试OK了 但是是两句SQL命令 怎么合并一起使用啊
|
-- 作者:有点甜 -- 发布时间:2014/9/29 9:51:00 -- select * from (select * from BOM结构 where 子零件编号 = \'15010003\' union all
select a.* from BOM结构 as a
inner join c on a.父零件编号 = c.子零件编号
) as d |
-- 作者:jiskin -- 发布时间:2014/9/29 9:56:00 -- 以下是引用有点甜在2014-9-29 9:51:00的发言:
select * from (select * from BOM结构 where 子零件编号 = \'15010003\' union all
select a.* from BOM结构 as a
inner join c on a.父零件编号 = c.子零件编号
) as d
C无效了,甜总,递归查询没有with 会不会不行? |
-- 作者:有点甜 -- 发布时间:2014/9/29 10:00:00 -- 那你就这样写
with c as
(
select * from BOM结构 where 子零件编号 = \'15010003\'
union all
select a.* from BOM结构 as a
join c on a.父零件编号 = c.子零件编号
);
select * from c
|
-- 作者:jiskin -- 发布时间:2014/9/29 10:06:00 -- 以下是引用有点甜在2014-9-29 10:00:00的发言:
那你就这样写
with c as
(
select * from BOM结构 where 子零件编号 = \'15010003\'
union all
select a.* from BOM结构 as a
join c on a.父零件编号 = c.子零件编号
);
delete from BOM结构 where 物料编号 in (select 物料编号 from c)
分号加了报错 \';\' 附近有语法错误。
最好有办法合并在一起,因为我想用用删除命令 |
-- 作者:有点甜 -- 发布时间:2014/9/29 10:07:00 -- 不应该报错;那你尝试弄成存储过程调用吧。 |
-- 作者:jiskin -- 发布时间:2014/9/29 10:11:00 -- 以下是引用有点甜在2014-9-29 10:07:00的发言:
不应该报错;那你尝试弄成存储过程调用吧。
疼,还没学过存储过程…… |
-- 作者:有点甜 -- 发布时间:2014/9/29 10:14:00 -- 存储过程的语法很简单的,你去查一下即可。 |
-- 作者:jiskin -- 发布时间:2014/9/29 11:34:00 -- 以下是引用有点甜在2014-9-29 10:14:00的发言:
存储过程的语法很简单的,你去查一下即可。
谢谢甜总,我刚才去学习了一下存储过程,写了这些内容: ALTER PROCEDURE [dbo].[bomdelete]
然后FT中的代码: Dim r As Row = Tables(e.Form.Name & "_Table1").Current
三个问题请教下 1、居然把BOM结构表中的数据全删了 2、有办法返回是否成功执行吗? 3、如果要加事务,是放在存储过程中还是FT的cmdsql中呢?
麻烦甜总了 |
-- 作者:有点甜 -- 发布时间:2014/9/29 11:38:00 -- 1、你去看生成的表C最后是什么;只会按照你的条件删除的;
2、你可以用@@Error判断,或者返回判断;
3、添加事务的话,在存储过程中添加比较好。 |