我需要获取联接中的最后一个(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
并且第一条记录不在我的数据库中;应该是:
1 | 3 | 2019-07-30 00:00:00
我快没想象力了,请帮帮我。谢谢!
已解决:
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 )