Java 如何在SQL中插入数据?
我有两个sql表。具有仓库ID和仓库名称的仓库;和productID为productName和warehouseID的产品表。table warehouse通常只包含3个仓库,但table product最多可以包含250个产品,我正在尝试编写脚本,将从warehouse表中添加到table product warehouseID,但一个仓库id只能重复50次,请帮帮我实施库存系统的基本要求是至少有三个表(四个或更多更好)Java 如何在SQL中插入数据?,java,sql,postgresql,Java,Sql,Postgresql,我有两个sql表。具有仓库ID和仓库名称的仓库;和productID为productName和warehouseID的产品表。table warehouse通常只包含3个仓库,但table product最多可以包含250个产品,我正在尝试编写脚本,将从warehouse表中添加到table product warehouseID,但一个仓库id只能重复50次,请帮帮我实施库存系统的基本要求是至少有三个表(四个或更多更好) 产品表–用于保存产品信息 仓库表–保存仓库信息 事务表–用于保存输入/输
CREATE TABLE products (p_id int, p_name varchar(200))
CREATE TABLE warehouses (w_id int, w_name varchar(200))
CREATE TABLE warehouse_transactions(wt_id int, wt_date datetime, wt_no int, wt_product_id int, wt_warehouse_id int, wt_qty int, wt_transaction_type varchar(3))
种子产品
INSERT INTO products VALUES (1, 'ABC KEYBOARD');
INSERT INTO products VALUES (2, 'XYZ KEYBOARD');
INSERT INTO products VALUES (3, 'MMM MONITOR');
种子仓库
INSERT INTO warehouses VALUES (1, 'SE WAREHOUSE')
INSERT INTO warehouses VALUES (2, 'SW WAREHOUSE')
INSERT INTO warehouses VALUES (3, 'N WAREHOUSE')
种子交易
INSERT INTO warehouse_transactions VALUES (1, '2020-11-17',1 , 1, 1, 5, 'IN');
INSERT INTO warehouse_transactions VALUES (2, '2020-11-17',2 , 2, 1, 10, 'IN');
INSERT INTO warehouse_transactions VALUES (3, '2020-11-17',3 , 2, 1, 3, 'OUT');
INSERT INTO warehouse_transactions VALUES (4, '2020-11-17',4 , 3, 2, 6, 'IN');
INSERT INTO warehouse_transactions VALUES (5, '2020-11-17',5 , 3, 2, 5, 'OUT');
INSERT INTO warehouse_transactions VALUES (6, '2020-11-17',6 , 1, 1, 5, 'IN');
INSERT INTO warehouse_transactions VALUES (7, '2020-11-17',7 , 1, 1, 5, 'IN');
INSERT INTO warehouse_transactions VALUES (8, '2020-11-17',8 , 1, 1, 5, 'OUT');
要检查当前库存(通常):
结果
要列出一般数据表,请执行以下操作:
SELECT
P.p_id AS 'PRODUCT ID'
, P.p_name AS 'PRODUCT NAME'
, W.w_name AS 'WAREHOUSE'
, SUM(CASE WHEN WT.wt_product_id = P.p_id AND WT.wt_transaction_type = 'IN' THEN WT.wt_qty ELSE 0 END) AS 'IN QTY'
, SUM(CASE WHEN WT.wt_product_id = P.p_id AND WT.wt_transaction_type = 'OUT' THEN WT.wt_qty ELSE 0 END) AS 'OUT QTY'
, SUM(CASE WHEN WT.wt_product_id = P.p_id AND WT.wt_transaction_type = 'IN' THEN WT.wt_qty ELSE -1 * WT.wt_qty END) AS 'AVAILABLE'
FROM
warehouse_transactions WT
INNER JOIN products P ON WT.wt_product_id = P.p_id
INNER JOIN warehouses W ON WT.wt_warehouse_id = W.w_id
GROUP BY P.p_id, P.p_name, W.w_name
-- TO LIST ALL PRODUCTS
SELECT * FROM products
-- TO LIST ALL WAREHOUSES
SELECT * FROM warehouses
-- TO LIST ALL TRANSACTIONS
SELECT * FROM warehouse_transactions
删除表和数据(仅在需要时执行)
这是一个可以帮助你开始旅程的例子。
接下来的步骤可能是:
.您尝试过什么吗?@notescrew INSERT INTO product(warehouseID)从仓库中选择warehouseID;你有样本数据吗?你说只重复50次是什么意思?限制是什么?您想建立一个库存系统还是只为产品定义仓库?您想在产品表中添加种子吗?或者您想根据交易设置仓库id?请澄清,以便我们提供帮助。库存系统不是这样工作的。这是一个您可以设计的灵活项目还是已经存在的数据库?当您在
WT.WT\u product\u id=P.P\u id
上进行内部连接时,无需在CASE
表达式中重复它。谢谢@astentx。您说得很对,我只是想以一种可以理解的方式来表达基本知识,因为问题来自一位新学员。(即希望交付域解决方案而不是SQL代码)。@U8080非常感谢您
DROP TABLE products
DROP TABLE warehouses
DROP TABLE warehouse_transactions