怎么没有睬我,再出一百分!!(100分)

  • 主题发起人 主题发起人 阿梁
  • 开始时间 开始时间

阿梁

Unregistered / Unconfirmed
GUEST, unregistred user!
由入库明细表(indetail)自动对库存(kucun)表进行货物增减操作,

插入新的货物(indeteail-->kucun)的SQL已经写出,没有问题,如下:

insert into kucun(serial,shortname,price,number)

select serial,name,price,number from indetail
where (indetail.serial+indetail.name not in
(select kucun.serial+kucun.shortname from kucun))

更新kucun的SQL如下,不过无法执行!!!!!!!
update kucun
set a.number=a.number+b.number
from kucun a join indetail b on
a.serial=b.serial and
a.name=b.name

是不是因为我用的是PARDOX有关,因为类似的语句在MS-SQL SERVER中
就能通过。

{
来自:slicker 时间:00-8-22 11:48:23 ID:315345
如果MSSQL可以通过,那么应该是PARDOX对SQL的操作并没有完全遵循SQL标准,毕竟是一个桌面形数据库,
同样的SQL还可以写成如下格式:
update kucun
set kucun.number=kucun.number+b.number
from indetail b
kucun.serial=b.serial and
kucun.name=b.name
}
我试了试:

在SQL Explorer中对两表进行update时总是报错,Why????????

报错提示:
Invalid use of keyword.
Token: from
难道SQL Explorer中不能用update对两表进行操作吗?

我从SQL Explorer中随便找了两个库试了试都不能用update.

望各位大侠帮小弟解决,谢
 
Paradox用的是LocalSQL,支持ANSI SQL_92,而其它大型SQL数据库支持的语法都比这多,
而且很多是互不通用的。
 
把所用到字段的定义贴出来,时下先
 
少了where 吧 ?
.... b [where] kuncun.serial .....
 
1 少了WHERE
2 LOCAL SQL 很多SQL语句都不支持的。相关内容可以看HELP。
 
where我已经加上了,不行。报错为:Token: from

其实我的目的很简单,只是自动由入库明细表(indetail)对库存(kucun)表
进行操作,
比如说:进了100个香蕉,库存自动加100个香蕉。我就已经非常的满足了,
我想问的是我的SQL写错了吗,还是PADOX不支持update 对两表进行操作?
(如果不支持,那她就没什么前途了!)

如用正确的SQL,望告之。谢谢。
 
复合SQL,你应该找一个DBA,普通用户,如我,很少能实现复合查询。
 
你可以换用这种方式看看能不能更改库存
update kucun set a.number=a.number+b.number
from kucun a,indetail b
where a.serial=b.serial and a.name=b.name
 
no way. Local SQL不支持update的From部分是个表达式. 只能是物理表或view
 
Another_eYes:
但是FROM后面确实是一个物理表呀。
why???
 
呵呵, 抱歉说错了, Local SQL根本不支持Update... From...where这种用法,
只支持Update ...where
 
有没有别的Sql语句可以解决问题 ?
还是换库做一个,如interbase?
 
准确地说,只有MS SQL才提供了Update扩展,即:
Update ....
From ...
Where....
这也是MS SQL的一个卖点。

其它的,不支持!(至少我试过了)。可以改用下面形式
update tablex
set tablex.f1=tablex.f1+(select tabley.f2 from tabley where tablex.fkeyx=tabley.fkeyy)
where tablex.key_key=???
不过,执行很慢!!
 
先选择出结果
selct kucun.number+indetail.number ,kucun.serial,kucun.name
from kucun ,indetail
where kucun.serial=indetail.serial and kucun.name=indetail.name
再更新
update kucun set number=:number1
where serial=:serial1 and name=:name1
注意:请不要给字段起sql保留字的名字,例如:number,money,name.
 
谢谢各位,问题已经解决了。
来自:guojun 时间:00-8-28 1:57:40 ID:320055
update tablex
set tablex.f1=tablex.f1+(select tabley.f2 from tabley where tablex.fkeyx=tabley.fkeyy)
where tablex.key_key=???
此方案可行,但是如果一条记录为空的话,所有的记录就都为空了。

所有我最后用其它方法解决了,,谢谢各们的帮助。 :D

 
谢谢各位,问题已经解决了。
来自:guojun 时间:00-8-28 1:57:40 ID:320055
update tablex
set tablex.f1=tablex.f1+(select tabley.f2 from tabley where tablex.fkeyx=tabley.fkeyy)
where tablex.key_key=???
此方案可行,但是如果一条记录为空的话,所有的记录就都为空了。

所有我最后用其它方法解决了,,谢谢各们的帮助。 :D

 
后退
顶部