我有一張表。用於數據遷移的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