【问题标题】:Traverse list of related tables遍历相关表列表
【发布时间】:2012-01-24 09:10:55
【问题描述】:

我有一个特殊的情况。在我的 MySQL 数据库中,我有大约 90 个奇怪的表,并且大多数表都已编入索引(我们使用的是 INNODB)。有些表格有这样的链接:

A -> B -> C->D->E

当我只有表 A 和 E 可以使用时,有没有办法在其中找到所有子表的列表?我已经做了一个动态查询构建器机制,为此我列出了带有表列表的用户,并且在像上面这样的给定情况下,只需要从表“A”和“E”中获取所需的信息,而无需搜索用户选择的表“B”、“C”和“D”。

表以正常方式链接。每个表都通过适当的外键约束链接到另一个表。

例如。 表 A(事务) Id、Trxn-Date、金额

表 B(事务表头) Id, Agent_Id (FK to Agent_Profile), Upd_Time, Trnx_Hdr_ID (FK to Table A)

表 C (Agent_Profile) Id、Prof_ID(FK 到 Profile)

表 D(配置文件) ID,Pers_Info_Id(FK 到 Personal_Info)

表 E(个人信息) 身份证、名字、姓氏

用户选择Trxn_Date、FirstName、LastName

如何检索子链接表信息,当所选表(在这种情况下)恰好仅为事务 personal_info

【问题讨论】:

  • 这些表是通过外键粘在一起的吗?

标签: mysql hyperlink


【解决方案1】:

似乎您可以将其中一些表格合并为 2-3 个表格,而不会丢失任何有用的信息。表 C D 和 E 仅包含指向其他表的列。

如果更改,带有 trxn_date 和名字/姓氏的查询会容易得多。

【讨论】:

  • 目前,结构无法重组。它已经运行了很长时间。我在描述中添加的只是一些。实际上这些表有更多的数据,为简洁起见,我刚刚添加了几列。我的要求是获取A和E之间所有中间表的列表,你明白要求了吗?
猜你喜欢
  • 2019-12-30
  • 2021-06-07
  • 1970-01-01
  • 2010-12-18
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-07
相关资源
最近更新 更多