- 为什么在这个查询中,最后一个'WHERE'子句需要限制重复?
- 第一LEFT JOIN是连接方案,以实体上的UID
- 第一内连接的连接方案,即获得这些程序统计子查询,通过在UID
- 子查询链接(即获取StatsForDistributorClubs子集)正在对UID列进行分组
- 因此,我一直认为这将全部加入独特的记录无论如何,所以我们不应该得到行重复
- 那么为什么需要限制根据最后的WHERE通过确保'程序'与'实体'链接?
(无关查询的省略清晰的部分)SQL - 当我已经分组时,为什么需要删除行重复项?
SELECT LmiEntity.[DisplayName]
,StatsForDistributorClubs.*
FROM [Program]
LEFT JOIN
LMIEntityProgram
ON LMIEntityProgram.ProgramUid = Program.ProgramUid
INNER JOIN
(
SELECT e.LmiEntityUid,
sp.ProgramUid,
SUM(attendeecount) [Total attendance],
FROM LMIEntity e,
Timetable t,
TimetableOccurrence [to],
ScheduledProgramOccurrence spo,
ScheduledProgram sp
WHERE
t.LicenseeUid = e.lmientityUid
AND [to].TimetableOccurrenceUid = spo.TimetableOccurrenceUid
AND sp.ScheduledProgramUid = spo.ScheduledProgramUid
GROUP BY e.lmientityUid, sp.ProgramUid
) AS StatsForDistributorClubs
ON Program.ProgramUid = StatsForDistributorClubs.ProgramUid
INNER JOIN LmiEntity
ON LmiEntity.LmiEntityUid = StatsForDistributorClubs.LmiEntityUid
LEFT OUTER JOIN Region
ON Region.RegionId = LMIEntity.RegionId
WHERE (
[Program].LicenseeUid = LmiEntity.LmiEntityUid
OR
[LMIEntityProgram].LMIEntityUid = LmiEntity.LmiEntityUid
)
感谢 - 这是一个很好的点和收窄的原因。我会授予这个答案,因为期待任何人无法访问我无法提供的数据,这是不合理的,我无法提供 –