SQL 联接重复项,转换访问数据库


SQL Join duplicates, converting an access db

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

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

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

问题是我们称之为fld_CommonID的主要标识符恰好存在重复。例如,3 张账单具有相同的标识符,但具有不同的信息。3 份文件和 3 张收据与这 3 张账单相匹配。因此,您可能已经猜到了,我的连接查询会产生 9 个模糊的行(6 个重复项(,而应该有 3 个(每个表一个连接(。 内部联接排除了另一个表中未定义的数据,因此不符合我的需求。

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

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

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

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