Sélection de la date maximale dans une opération de jointure
Pour récupérer les emplacements historiques d'un enregistrement spécifique, considérez la requête suivante :
SELECT l.location, t.transaction_id, t.date_modified FROM transactions AS t INNER JOIN ( SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id ) AS max_record ON ( t1.received_id = max_record.received_id ) INNER JOIN locations AS l ON ( l.location_id = t.location_id ) INNER JOIN received AS r ON ( r.received_id = t.received_id ) WHERE t.received_id = '1782' ORDER BY t.date_modified DESC;
Cette requête renvoie une liste d'emplacements pour un enregistrement donné, mais elle inclut plusieurs entrées pour le même emplacement et la même date. Pour vous assurer que seule la date de dernière modification est affichée pour chaque emplacement, utilisez la requête suivante :
SELECT t1.received_id, t1.transaction_id, t1.date_modified, l.location FROM transactions t1 JOIN ( SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id ) AS max_record ON ( max_record.received_id = t1.received_id AND max_record.maxmodify = t1.date_modified ) JOIN locations AS l ON ( l.location_id = t1.location_id ) JOIN received AS r ON ( r.received_id = t1.received_id ) WHERE t1.received_id = '1782' ORDER BY t1.date_modified DESC;
La modification clé est l'ajout de la condition de jointure qui garantit que la valeur date_modified sélectionnée est la valeur maximale pour chaque enregistrement. . Cela garantit que seules les informations de localisation les plus récemment mises à jour sont affichées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!