我有这种关系
我很高兴得到每个技术人员的最后完成(Servicio.FechaTermino
)服务(Servicio
) (Tecnico
)。
使用此查询:
SELECT FechaTermino as FechaTermino, idTecnico, Latitud, Longitud, Nombre, Apellido, Flag, idServicio
FROM Servicio, Tecnico, Servicio_Tecnico
WHERE Servicio.idServicio = Servicio_Tecnico.Servicio_idServicio
AND Tecnico.idTecnico = Servicio_Tecnico.Tecnico_idTecnico
AND Completado = 1
我明白了:
观看idServico = 52
当我使用Max
函数尝试获取每位技术人员的最后完成服务时,
SELECT Max(FechaTermino) as FechaTermino, idTecnico, Latitud, Longitud, Nombre, Apellido, Flag, idServicio
FROM Servicio, Tecnico, Servicio_Tecnico
WHERE Servicio.idServicio = Servicio_Tecnico.Servicio_idServicio
AND Tecnico.idTecnico = Servicio_Tecnico.Tecnico_idTecnico
AND Completado = 1
Group by idTecnico
这种情况发生了
idServicio=52
消息,它考虑idServicio = 8
就像上次完成的服务一样
如何获得每位技术人员的最后完成服务?
答案 0 :(得分:1)
SELECT UNO.* FROM
(SELECT FechaTermino AS FechaTermino, idTecnico, Latitud, Longitud, Nombre, Apellido, Flag, idServicio
FROM Servicio, Tecnico, Servicio_Tecnico
WHERE Servicio.idServicio = Servicio_Tecnico.Servicio_idServicio
AND Tecnico.idTecnico = Servicio_Tecnico.Tecnico_idTecnico
AND Completado = 1) AS UNO
LEFT OUTER JOIN
(SELECT FechaTermino AS FechaTermino, idTecnico, Latitud, Longitud, Nombre, Apellido, Flag, idServicio
FROM Servicio, Tecnico, Servicio_Tecnico
WHERE Servicio.idServicio = Servicio_Tecnico.Servicio_idServicio
AND Tecnico.idTecnico = Servicio_Tecnico.Tecnico_idTecnico
AND Completado = 1) AS DOS
ON (UNO.idTecnico = DOS.idTecnico AND UNO.FechaTermino < DOS.FechaTermino)
WHERE DOS.idTecnico IS NULL;