我们有两个对象应该有一对多的关系,但无论出于什么原因,关系被配置为多对多。所以,我们知道这是不正确的,但实际上症状是目前需要修复的,这就是数据问题。您如何生成一侧所有记录的列表,这些记录与另一侧的多个记录相关联?即使我们还无法修复关系,此列表也将用于修复数据。
该表包含x
和y
之间的关系,该关系有两列:nManySide1
和nManySide2
。 nManySide1
包含x表中的主键,nManySide2
包含y
表中的主键。
这是我们提出的查询,但它根本没有结果:
SELECT nManySide1, count(nManySide1),nManySide2, count(nManySide2) from dbo.X_Y
GROUP BY nManySide1, nManySide2
HAVING (COUNT(nManySide1) > 1 and COUNT(nManySide2) > 1)
我们的临时解决方案是将表转储到Excel,使用条件格式在Y中标记重复项,然后删除/隐藏所有未标记的行。但是,我们希望能够自动化,让我们知道重复项已经创建并需要修复,直到我们能够以一对多的方式重新创建关系。
答案 0 :(得分:0)
您没有指定是否可能在表格中显示重复项。如果是这样,那么你会想要:
SELECT nManySide1, count(distinct nManySide2) as cnt
from dbo.X_Y
GROUP BY nManySide1
HAVING count(distinct nManySide2) > 1;