3 Réponses :


0
votes
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.

2 commentaires

Pourquoi n'avons-nous pas besoin d'identifiant dans l'index pour innoDB?


@netvope : parce que innodb est organisé et implicitement contient la clé primaire en tant que pointeur de ligne dans chaque index.



3
votes

Vous ne pouvez pas faire cela dans une requête à Django. Vous pouvez obtenir le client avec juste la date de leur dernier achat le plus récent de ce type: xxx

mais vous n'obtenez pas automatiquement accès à l'achat réel de cette façon.


1 commentaires

À Django 2 et 3, cette restriction a été levée. Voir le lien dans la réponse acceptée.



2
votes

Vous pouvez jeter un coup d'œil à une discussion similaire:

Quertielle Django qui obtiennent le plus Objets récents de différentes catégories


1 commentaires

En fait, il s'agit d'un duplicata de cette question.