3 Réponses :
SELECT *
FROM customers Ñ
LEFT JOIN
purchases p
ON p.id =
(
SELECT id
FROM purchases pl
WHERE pl.customer = c.id
ORDER BY
pl.customer DESC, pl.date DESC
LIMIT 1
)
Make sure you have a composite index on purchases (customer, date) if your table is InnoDB, or on purchases (customer, date, id) if your table is MyISAM.
Pourquoi n'avons-nous pas besoin d'identifiant dans l'index pour innoDB?
@netvope code>: parce que innodb code> est organisé et implicitement contient la clé primaire code> en tant que pointeur de ligne dans chaque index.
Vous ne pouvez pas faire cela dans une requête à Django. Vous pouvez obtenir le client avec juste la date forte> de leur dernier achat le plus récent de ce type: mais vous n'obtenez pas automatiquement accès à l'achat réel de cette façon. p> p>
À Django 2 et 3, cette restriction a été levée. Voir le lien dans la réponse acceptée.
Vous pouvez jeter un coup d'œil à une discussion similaire: p>
Quertielle Django qui obtiennent le plus Objets récents de différentes catégories P>
En fait, il s'agit d'un duplicata de cette question.
Dupliqué possible de requête Django qui obtiennent des objets les plus récents de différents Catégories