Ich versuche, das neueste Zertifikat einen Benutzer aus der Datenbank hat. Ich möchte nur das Neueste sehen und nicht alle anderen, also verwende ich group by und sortiere dann nach der eindeutigen ID aus der Haupttabelle.Verwenden von Gruppierung und Reihenfolge von in mysql Abfrage korrekt
Ohne Gruppe funktioniert das perfekt. Ich sehe das letzte hochgeladene Zertifikat und dann alle anderen unten.
Sobald ich die Gruppe hinzufügen, sehe ich das erste jemals hochgeladene Zertifikat, das sinnlos ist, wie es vor Jahren sein könnte.
Meine Abfrage ist ziemlich groß, da ich eine Menge anderer Informationen von anderen Tabellen zeichne.
Hier ist meine Abfrage.
SELECT
usercert.*,
cert.*,
certCat.certCatName,
certTask.certTaskName ,
certStatus.certStatusName
FROM
`usercert`
INNER JOIN
cert
ON
cert.idcert = usercert.idcert
INNER JOIN
certCat
ON
certCat.idcertCat = cert.idcertCat
INNER JOIN
certTask
ON
certTask.idcertTask = usercert.idcertTask
INNER JOIN
certStatus
ON
certStatus.idcertStatus = usercert.idcertStatus
WHERE
usercert.iduser=%s
GROUP BY
usercert.idcert
ORDER BY
usercert.usercertEnd DESC
Haben Sie das Schlüsselwort 'MAX' für das Datum in Kombination mit dem Schlüsselwort' LIMIT' versucht? –
Wenn Sie nur das letzte Zertifikat benötigen, benötigen Sie keine Gruppe nach. Mach einfach ein LIMIT 1 mit der bereits vorhandenen Anfrage und es sollte nur die Zeile zurückgeben, die du brauchst. –