【问题标题】:SQL Join duplicates, converting an access dbSQL Join 重复,转换访问数据库
【发布时间】:2016-05-18 21:33:43
【问题描述】:

我正在将访问数据库转换为新格式。目前所有数据都保存在 MySQL 中。

就本问题而言,共有 3 个表格。 tbl_Billstbl_Documentstbl_Receipts

我写了一个外连接查询,因为有些账单有文件和收据,有些没有。考虑到这些情况,我需要每个集合的完整列表,以便稍后由 php 脚本处理。

问题在于,我们将调用 fld_CommonID​​ 的主要标识符恰好重复存在。例如,3张钞票具有相同的标识符,具有不同的信息。 3 份文件和 3 份收据与这 3 份账单相符。 所以你可能已经猜到了,我的连接查询产生了 9 个模糊的行(6 个重复),而应该有 3 个(每个表一个连接)。内连接会排除其他表中未定义的数据,因此无法满足我的需求。

所以...我在想我想要做的是更新每个表中的这 3 条记录(跨所有具有重复项的行),以便它们具有唯一的计数器 ID。分别为#1、#2 和#3,这样我就可以对它们每行唯一地执行连接查询。

是否可以不运行 php 代码来选择按自然表顺序排序的重复项,然后用计数器更新它们? 如果可以进行这样的查询,你会建议我走那条路线(脚本)而不是一些神奇的 SQL 查询来做这样的事情吗? 或者是否可以根据自然表顺序进行外部连接(很确定这是不可能的)?

【问题讨论】:

  • 呃,你的数据库是 MS Access 还是 MySQL?这些不一样。
  • MySQL 完全,我导入了访问数据库,这三个表上没有主键。它们使用自然表顺序进行管理,旧系统是一个 accde 访问脚本 gui,正在被网络软件取代。
  • 我正在编写一个脚本来解决这个问题,并在没有连接的情况下拆分查询以手动映射它们。因此,尽管这是一个解决方案,但我仍然对您的专家对这种情况可能有的任何答案感到好奇。如果几天内没有问题,将关闭它。

标签: php mysql join duplicates


【解决方案1】:

写下这个答案只是为了结束这个问题。

如果有一种方法可以根据自然顺序(无主键)链接单独表中的重复字段,那么内连接将是完美的。问题不在于我缺少查询,而在于数据库结构不佳。使用代码而不是复杂的查询可以更好地解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    相关资源
    最近更新 更多