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