【问题标题】:Microsoft Access Update Query - Insert Primary Key from Another TableMicrosoft Access 更新查询 - 从另一个表中插入主键
【发布时间】:2018-01-27 09:33:34
【问题描述】:

好吧,因为我对 MS Access 完全陌生,所以被困了几天。

假设我有三个表:

  • OrderTable(包含字段:otID 作为自动编号的主键、custID、Ref)。
  • CustomerTable(包含字段:custID 作为自动编号的主键、custName、custPhone 和 custEmail)。
  • OP-tMain(包含字段:custName、custPhone、custEmail 和 Ref)。

所有数据都存储在 Excel 中,我将使用 OperationTable 在 Access 中处理和存储数据。

我可以执行 UPDATE QUERY 来更新 CustomerTable 就好了。更新 CustomerTable 后,我需要更新订单表。我面临的问题是,在 OrderTable 中,我省略了 custName、custPhone 和 custEmail,只使用了 custID(我相信这是正确的做法)。任何人都可以帮助我如何更新/插入来自 OP-tMain 的数据并从 CustomerTable 中提取相应的 cID?

编辑。此处上传的示例文件 ==> https://drive.google.com/file/d/1fK3IDEd54Jfr6c-U2s5Bnm4TeK2TQZnM/view

【问题讨论】:

    标签: sql ms-access sql-update


    【解决方案1】:

    考虑使用联合查询进行追加和更新:

    追加查询

    INSERT INTO OrderTable (CustId, Ref)
    SELECT c.CustID, o.Ref
    FROM CustomerTable c
    INNER JOIN [OP-tMain] o
    ON c.custName = o.custName
    

    更新查询以更新 Ref 列,并为每个客户的多个 Ref 条目提供相关计数匹配

    UPDATE (OrderTable m
    INNER JOIN CustomerTable c ON c.CustID = m.CustID)
    INNER JOIN [OP-tMain] o ON c.custName = o.custName
    SET m.Ref = o.Ref
    WHERE DCOUNT("*", "OrderTable", "otID <=" & m.otID & " AND custID =" & m.custID) = 
          DCOUNT("*", "[OP-tMain]", "ID <=" & o.ID & " AND custName ='" & o.custName & "'")
    

    【讨论】:

    • 非常感谢!它可以工作 99%。唯一的问题是更新查询似乎弄乱了 REF。这是应该复制到 OrderTable 的 op-tMain 表:imgur.com/a/6cKhe,这是 OrderTable:imgur.com/a/mwKBW
    • 图片有什么问题?从我看到的 Ref 值对应于相同的 CustID.
    • 客户 ID 1 有 2 个条目,第一个参考 = 随机,第二个参考 = 去。需要保留两个参考。
    • 尝试根据每个客户的多个 Ref 的相关计数匹配行的编辑答案。
    • 谢谢,但我在 DCOUNT("", "OrderTable", "otID ", "[OP-tMain]", "ID
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多