0

I am not well in django orm advance query.

problem is:

select rows with max a column value distinct by other column and order by date (desc)

I found answer on stackoverflow see this

Answer in MYSQL is this (from above give url)

SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime

Its Equivalent Django ORM query ..

My Model is

class ModelStatus(models.Model):
    name = models.CharField(max_length=100, default='---')
    status = models.CharField(max_length=10, default='---')
    fall = models.CharField(max_length=100, default='---')
    rise = models.CharField(max_length=100, default='---')
    add_date = models.DateTimeField(auto_now_add=False, auto_now=True)
    error_message = models.TextField(default=' ')
    to = models.ForeignKey('model1',
                           related_name="status",
                           related_query_name="hstatus")

distinct column: name

max value column: add_date

EXAMPLE

id  name  add_date     status   fall_count | rise_count
---|-----|------------|--------|-----------|--------
1  | ab  | 04/03/2009 | up     | 399       | 100
2  | aa  | 04/03/2009 | down   | 244       | 200
3  | aa  | 03/03/2009 | down   | 555       | 210
4  | ba  | 03/03/2009 | up     | 300       | 256
5  | ab  | 03/03/2009 | up     | 200       | 145


OUTPUT

id  name  add_date     status   fall_count | rise_count
---|-----|------------|--------|-----------|--------
1  | ab  | 04/03/2009 | up     | 399       | 100
2  | aa  | 04/03/2009 | down   | 244       | 200
4  | ba  | 03/03/2009 | up     | 300       | 256
Community
  • 1
  • 1
iammehrabalam
  • 1,285
  • 3
  • 14
  • 25

0 Answers0