Java 如何在SQL中插入数据?

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次,请帮帮我实施库存系统的基本要求是至少有三个表(四个或更多更好) 产品表–用于保存产品信息 仓库表–保存仓库信息 事务表–用于保存输入/输

我有两个sql表。具有仓库ID和仓库名称的仓库;和productID为productName和warehouseID的产品表。table warehouse通常只包含3个仓库,但table product最多可以包含250个产品,我正在尝试编写脚本,将从warehouse表中添加到table product warehouseID,但一个仓库id只能重复50次,请帮帮我实施库存系统的基本要求是至少有三个表(四个或更多更好)

  • 产品表–用于保存产品信息
  • 仓库表–保存仓库信息
  • 事务表–用于保存输入/输出事务数据
  • 供应商表–为我们提供产品的供应商
  • 客户表–我们向他们交付产品
  • +许多其他方可以在产品内/外制造产品
  • 在这个示例中我将使用最小值,即3个表:

    创建表的步骤

    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
    
    删除表和数据(仅在需要时执行)

    这是一个可以帮助你开始旅程的例子。

    接下来的步骤可能是:

  • 扩展Products表以包含更多产品的属性-与仓库和事务处理相同
  • 添加“供应商”和“客户”表,并将其id包含在事务处理表中
  • 针对特定产品、特定仓库等,构建新查询以检索两个日期之间的库存

  • .

    您尝试过什么吗?@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