这个问题怎么做呀SQL,本人在线的(50分)

  • 主题发起人 主题发起人 zytzjx
  • 开始时间 开始时间
Z

zytzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个表SELL中有字段NO与NUM,在表Stock中有字段NO与COUNT,现在是要把表stock表中的
COUNT=COUNT-NUM where SELL.NO = STOCK.NO;
这个怎么做呀,一句SQL语句可以吗
 
关键是SELL.NO 和STOCK.NO有关系吗??
这个NO到底是什么NO,是卖出去的货品吗??
若是就可以!!!
 
updata stock set a.count=a.count-b.num from sell as a,stock as b where
a.no=b.no
试试,没有测试过,不知道行不行[:D][:D][:D]
 
楼上的兄弟的意思是明白了,我也是想这样写呢,可是,,,,,,,,,,
 
有可能是你那个表中有多个值,不是唯一的,看看,也有可能你没有update的权限,
 
兄弟们,给点帮助吧
 
是这样的,SELL表中可能有多个值的,但是,库存表中肯定只有一个值的
 
updata stock set count=count-(select sum(num) from sell b where stock.no=b.no)
 
to Jsxjd
这个出错,说"必须操作一个可更新的数据"
 
那一句话是,操作必须使用一个可更新的查询。这是怎么回事呀
 
你对 stock 有更新权限吗?
stock 是表吗?
另外应该是 Update
//
 
是表名,我有权限的呀
 
请兄弟们多帮助一下吧
 
我上面的答案为什么不行呢??给出原因,才有相应的答案啊
 
可以用UPDATE ....SET ... FROM ... WHERE... 的语法吗?
~~~~~
主要是FROM子句,我在ORACLE下执行就报错ORA-00933: SQL 命令不正当的结束
 
UPDATE A
SET A。COUNT=A。COUNT-B。NUM
FROM STOCK A INNER JOIN (SELECT NO,SUM(NUM) AS NUM
FROM SELL
GROUP BY NO) B
ON A。NO=B。NO
试试,没有测试过,不知道行不行[:D][:D][:D]
 
上面的还少了一个条件没有说的
就是当SELL表的status="N"的才去算的,因为如果等“P”就说明是已经算过的了。
 
updata stock set stock.count=stock.count-b.num from sell as a where
stock.no=b.no and stock.status='N'

肯定可以
 
sdhxdjw的方法出错:'语法错误(操作符丢失)在查询表达式'A.总的数量 = A.总的数量 - B.NUM FROM STOCK A INNER JOIN'
+' (SELECT 货品编号,SUM(NUM) AS NUM FROM SELL GROUP BY 货品编号 where status = ''N'') B'
+' ON A.货品编号 = B.货品编号'中。'
我写的是 strSQL :='UPDATE A SET A.总的数量 = A.总的数量 - B.NUM FROM STOCK A INNER JOIN'
+' (SELECT 货品编号,SUM(NUM) AS NUM FROM SELL GROUP BY 货品编号 where status = ''N'') B'
+' ON A.货品编号 = B.货品编号';
 
to hason:
你的也不行:语法错误(操作符丢失)在查询表达式'stock.总的数量 = stock.总的数量 - b.num
from sell as b '中
语句是
strSQL := 'update stock set stock.总的数量 = stock.总的数量 - b.num'
+' from sell as b where stock.货品编号 = b.货品编号 and b.status=''N''';
 
后退
顶部