我需要在联接中使用最后一个(fechaDesde字段)寄存器,我只想要最后一条记录,并且我有此表:
[relObrSocPaciente]
idPaciente | idObraSocial| fechaDesde
1 | 1 | 2018-07-29 21:49:46
1 | 2 | 2017-07-29 21:49:46
1 | 3 | 2019-07-30 00:00:00
2 | 3 | 2018-07-30 21:49:46
1 | 4 | 2001-07-29 21:49:46
1 | 5 | 2018-07-30 23:49:46
我有这个查询:
SELECT p.idPaciente, p.nombre, p.apellido, p.email, o.descOSoc
FROM pacientes p
LEFT JOIN (
SELECT r.idPaciente, r.idObraSocial, max(r.fechaDesde) MaxDate
FROM relObrSocPaciente r
group by r.idPaciente ) rel on p.idPaciente = rel.idPaciente
INNER JOIN obrasocial o ON rel.idObraSocial = o.idOSocial
WHERE p.estado = '0'
ORDER by rel.MaxDate DESC
问题出在内部选择中:
SELECT r.idPaciente, r.idObraSocial, max(r.fechaDesde) MaxDate
FROM relObrSocPaciente r
group by r.idPaciente
将带来:
idPaciente | idObraSocial| fechaDesde
1 | 1 | 2019-07-30 00:00:00
2 | 3 | 2018-07-30 21:49:46
并且fisrt记录不在我的数据库中;应该是:
1 | 3 | 2019-07-30 00:00:00
我的想象力不足,请帮忙。 谢谢!
答案 0 :(得分:0)
已解决:
SELECT tf.idPaciente, tf.nombre, tf.apellido, tf.email, o.descOSoc, r.fechadesde
FROM pacientes tf
LEFT JOIN relObrSocPaciente r on tf.idPaciente = r.idPaciente
LEFT JOIN obrasocial o on r.idObraSocial = o.idOSocial
WHERE r.fechaDesde in ( SELECT max( fechadesde )
FROM relObrSocPaciente
WHERE idPaciente = tf.idPaciente )