sql >> データベース >  >> RDS >> Mysql

Django自己結合、このクエリをORMクエリに変換する方法

    より正規化されたデータモデルを使用すると、これを簡単に行うことができます。次のようなアプローチの使用を検討してください:

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

    次に、これを行うことができます:

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

    残念ながら、その時点で、複数のノードのhealth_timeの値が同じである場合、返されるノードは重複します。 。 .distinct('node_group_id')を追加できる場合があります それはそれをクリアすることができますが、私は100%ポジティブではありません。



    1. MySQL-1対1の関係?

    2. LockModeTypeJpaの違い

    3. wampを使用してSQLファイルをデータベースにインポートする

    4. LoaderManagerを使用して自動的に再クエリする方法