【问题标题】:SQL - INSERT INTO from 2 tables into third?SQL - 从 2 个表插入到第三个表?
【发布时间】:2020-07-30 16:08:19
【问题描述】:

我有 3 张桌子 - 生产商、产品、优惠。第一个包含 ProducerID 和 ProducerName,第二个包含 ProductID 和 ProductName,第三个包含 ProducerID 和 ProductID。我希望用户输入 ProducerName 和 ProductName 和 SQL 以从其他两个表中选择 ProducerID 和 ProductID 并 INSERT INTO 第三个联结表。我的 SQL 语句应该如何做到这一点?

应该是这样的:

sql = `INSERT INTO offers (ProducerID, ProductID) SELECT ProducerID FROM producers WHERE ProducerName="${ProducerName}", SELECT ProductID from products WHERE ProductName="${ProductName}"`

或者我应该在两个 SELECT 语句之间使用 AND 语句而不是逗号?还是我的方法应该完全不同?

【问题讨论】:

    标签: sql


    【解决方案1】:

    你只能从一个选择中插入,所以:

    INSERT INTO offers(ProducerID, ProductID)
    SELECT ProducerID, ProductID
    FROM producers, products
    WHERE ProducerID = "${ProducerName}" AND ProductID = "${ProductName}"
    

    【讨论】:

      【解决方案2】:

      假设 ProducerID 和 ProductID 只返回 1 条记录:

      INSERT INTO offers (ProducerID, ProductID) VALUES (
      (SELECT TOP 1 ProducerID FROM producers WHERE ProducerName="${ProducerName}"), 
      (SELECT TOP 1 ProductID from products WHERE ProductName="${ProductName}")
      )
      

      还要确保正确参数化 ProducerName 和 ProductName,因为它来自用户输入以防止 SQL 注入。

      【讨论】:

      • 不知道这样的语法会起作用。很高兴知道!
      • 我也不是 100% 确定的!在发布之前,我必须在 SSMS 中尝试一下。
      • 是的,所有产品和生产者的名称和 ID 都是唯一的,因此只会返回一条记录。非常感谢您的帮助!
      • 随时!祝你的项目好运。
      猜你喜欢
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多