sql >> Databáze >  >> RDS >> Mysql

Django self join , Jak převést tento dotaz na dotaz ORM

Budete to mít snazší s normalizovanějším datovým modelem. Zvažte použití takového přístupu:

class NodeGroup(model.Model):
    pass

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

Pak můžete udělat toto:

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'))

Bohužel v tomto okamžiku budou mít vrácené uzly duplikáty, pokud má více než jeden uzel stejnou hodnotu pro health_time . Možná budete moci přidat .distinct('node_group_id') to by to mohlo objasnit, ale nejsem 100% pozitivní.



  1. převod dotazu MySQL na syntaxi Codeigniter

  2. Jak vložím prostorový bod mysql s modelem yii?

  3. Jak přidat záhlaví a zápatí do sestavy v aplikaci Access

  4. Použijte konzolu MySQL prostřednictvím skriptu PowerShell