Wie bekomme ich den maximalen Datumswert einer Union-Tabellen? Immer wenn ich GROUP BY verwende, erhalte ich nur den maximalen Datumswert der ersten Tabelle. Bisher ist hier mein Code:Erhalten Sie das maximale Datum Ergebnis von 2 Union-Tabellen
SELECT * FROM ((SELECT tc.id, tc.personnel_id, tpi.emp_status, tpi.firstname, tpi.lastname, tc.date_from, tc.date_to FROM tbl_contracts AS tc
JOIN (SELECT personnel_id, MAX(date_to) AS Maxdatetime
FROM tbl_contracts
GROUP BY personnel_id) AS r
ON tc.personnel_id = r.personnel_id AND tc.date_to = r.Maxdatetime
LEFT JOIN tbl_personnel_info AS tpi
ON tpi.id = tc.personnel_id
WHERE tpi.firstname LIKE CONCAT('%', '', '%')
AND tpi.lastname LIKE CONCAT('%', '', '%')
ORDER BY tc.date_to DESC)
UNION ALL
(SELECT tpss.id, tpss.personnel_id, tpi.emp_status, tpi.firstname, tpi.lastname, tpss.date_from, tpss.date_to
FROM tbl_personnel_sea_service AS tpss
JOIN (
SELECT personnel_id, MAX(date_to) AS Maxdatetime
FROM tbl_personnel_sea_service
GROUP BY personnel_id
) AS r
ON tpss.personnel_id = r.personnel_id AND tpss.date_to = r.Maxdatetime
LEFT JOIN tbl_personnel_info AS tpi
ON tpi.id = tpss.personnel_id
WHERE tpi.firstname LIKE CONCAT('%', '', '%')
AND tpi.lastname LIKE CONCAT('%', '', '%')
AND agency_name = 'UMMI'
ORDER BY tpss.date_to DESC)) AS tmain
GROUP BY tmain.personnel_id
Das Ergebnis ist korrekt. Wenn ich jedoch GROUP BY tmain.personnel_id verwende, ist das Sortierergebnis falsch. Es ist nicht immer den max Datumswert der zweiten Tabelle
Ich brauche nur die maximale date_to Wert –
es sollte die maximale date_to Ergebnis von jedem Benutzer bekommen. –
Ich habe GROUP BY verwendet, weil es ein mehrfaches Ergebnis des Vertrags pro Benutzer gibt. Aber ich brauche nur das späteste Datum. –