【问题标题】:how do i automatically fill in fields using data from another table (based on foreign key = primary key) in mysql workbench?如何在 mysql 工作台中使用另一个表中的数据(基于外键 = 主键)自动填充字段?
【发布时间】:2022-01-22 07:41:23
【问题描述】:

基本上,我有一个主键为“Client_ID”的主客户端表。在此客户表中,还有其他字段,例如“Client_Name”和“Phone_Number”。而且我还有其他表,例如引号,其中还有“Client_ID”字段作为外键,引用客户端表中的主键。在报价表中,还有一些从客户表中选择的重复字段,例如 Client_Name。我这样做是为了使用报价表中的字段自动生成报价单。无论如何,有没有办法让我在报价表的外键client_id中输入例如“C-0001”时,无需再次输入Client_Name等字段,而是复制相应的数据从客户表过来?

【问题讨论】:

  • "...客户端表中还有一些选定的重复字段,例如 Client_Name 再次..." - 这是冗余。根据定义,冗余的维护成本很高,因此应该有一个令人信服的理由来拥有它,通常是极端的性能。您确定要冗余吗?

标签: mysql foreign-keys


【解决方案1】:

这可以通过触发器来完成,但更惯用的方法是将这些字段仅保留在 client 表中,并在需要创建报价报告时使用连接来查询它们:

SELECT q.*, c.client_name, c.phone_number
FROM   quotation q
JOIN   client c ON q.client_id = c.client_id

【讨论】:

  • 你能告诉我它是如何与触发器一起工作的吗?我现在真的很想完成我的项目,如果我采用惯用的方法,我将不得不重组所有内容。
  • 等等,没关系,老实说,这很有意义,谢谢。
  • 嘿!我知道这是不久前的事了 - 但你知道我是否可以将多个表中的字段合并在一起吗?
  • @georgie 你可以加入你需要多少张桌子。您能否发布一个包含所有相关详细信息的新问题并将其链接到此处?这会比使用 cmets 更容易。
猜你喜欢
  • 2020-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 1970-01-01
  • 2021-09-04
  • 2022-09-30
  • 2013-09-04
相关资源
最近更新 更多