sql >> Database teknologi >  >> RDS >> Mysql

Django selv deltage , Sådan konverteres denne forespørgsel til ORM-forespørgsel

Du vil have lettere ved at gøre dette med en mere normaliseret datamodel. Overvej at bruge en fremgangsmåde som denne:

class NodeGroup(model.Model):
    pass

class NodeHealth(model.Model):
    node_group = models.ForeignKey(NodeGroup, related_name='nodes')
    health_time = models.IntegerField()
    status = models.IntegerField()

Så kunne du gøre dette:

from django.db.models import Max, F

nodes = NodeHealth.objects.all().annotate(
    max_health_time=Max('node_group__nodes__health_time')
).filter(health_time=F('max_health_time'))

Desværre på det tidspunkt vil de returnerede noder have dubletter baseret, hvis mere end én node har den samme værdi for health_time . Du kan muligvis tilføje en .distinct('node_group_id') det kunne opklare det, men jeg er ikke 100 % positiv.



  1. MySQL SET NAMES nær toppen af ​​den langsomme forespørgselslog

  2. Avanceret databaseovervågning og -styring til TimescaleDB

  3. slet en post fra to tabeller i php/mysql

  4. PHP/MySQL:Opret ny forbindelse for hver forespørgsel?