我有一张表。用于数据迁移的SQL查询
CREATE TABLE StockItem
(
id NUMBER(8) NOT NULL,
book_id NUMBER(8) NOT NULL,
wh_id NUMBER(8) NOT NULL,
quantity NUMBER(4) NOT NULL,
price NUMBER(8,2) NOT NULL
);
ALTER TABLE StockItem
ADD CONSTRAINT UQ_StockItem UNIQUE (book_id, wh_id);
ALTER TABLE StockItem ADD CONSTRAINT PK_StockItem
PRIMARY KEY (id);
ALTER TABLE StockItem ADD CONSTRAINT FK_StockItem_Book
FOREIGN KEY (book_id) REFERENCES Book (id);
ALTER TABLE StockItem ADD CONSTRAINT FK_StockItem_Warehouse
FOREIGN KEY (wh_id) REFERENCES Warehouse (id);
现在假设wh_id = 1
被关闭,我所有的书搬到wh_id = 2
。 wh_id = 2
的预订价格应与wh_id = 1
和quantity
的计算价格相同(例如,对于两个连栋房屋,相同的book_id
增加)。我怎样才能做到这一点?
UPD:
以下是我可以如何获得书籍的新数量值。现在
SELECT BOOK_ID, SUM(QUANTITY)
FROM STOCKITEM
WHERE WH_ID IN (1, 2)
GROUP BY BOOK_ID;
我应该以某种方式对其进行更新。
UPDATE STOCKITEM
SET QUANTITY = /* My summed quantity */
WHERE BOOK_ID = /* Book ids from 1 and 2 wh */
Oracle 11g数据库。 – 2013-03-26 16:12:25
更新后,所以你可以看到我的尝试。 – 2013-03-26 16:17:02
这是你在找什么?你把你的'BOOK_ID'拼音化,并用计数来更新它。 'UPDATE STOCKITEM SET QUANTITY =(SELECT COUNT(*)FROM STOCKITEM WHERE BOOK_ID = yourBookId)WHERE BOOK_ID =/* Book 1和2的id * /' – 2013-03-26 16:22:28