首先,为了让您了解我的问题,我需要向您展示我的数据库模型,所以在这里。
现在你已经看过了,这就是我的问题:
我有这个查询
select SUM(e.totalEtapa) totalProyecto,
e.idProyecto
from Etapa e
inner join EtapaPartida ep on ep.idEtapa = e.idEtapa
inner join Partida p on p.numero = ep.idPartida
and p.version = ep.versionPartida
left join Partida b on b.numero = p.numero
and p.version < b.version
inner join LineaRecursoPartida lrp on p.numero = lrp.numPartida
and p.version = lrp.versionPartida
inner join LineaRecurso lr on lr.id = lrp.IdLinea
inner join Recurso r on r.codigo = lr.codigo
and r.version = lr.version
where r.codigo = 2
and r.version = 2
and b.version is null
group by e.idProyecto
所以你可以看到,并且关于你我上面给你看的模型,我想要etapa上与recurso记录相关的所有记录的总和,考虑到达到它所需的所有连接。 partida的记录应该是它们的“最大版本”,在这种情况下,带有codigo = 2和version = 2的递归。所以事情是这个查询返回两倍应该的值。进行一些研究后我意识到这种情况正在发生,因为我的recurso记录与partida表上的两个记录有关,同样这些记录也与EtapaPartida表中相同的etapa记录有关。
我已经尝试使用distinct子句,在上面的查询中添加了表Etapa中的列idEtapa但没有成功。无论如何,我不喜欢使用这种条款摆脱问题,因为它可能会导致另一个问题。所以我想知道你是否有任何想法如何从etapa返回一条记录而不是关于它们是否与几个与同一个recurso记录有关的partida记录有关?