Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Django bergabung sendiri, Bagaimana mengonversi kueri ini ke kueri ORM

Anda akan lebih mudah melakukannya dengan model data yang lebih dinormalisasi. Pertimbangkan untuk menggunakan pendekatan seperti ini:

class NodeGroup(model.Model):
    pass

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

Maka Anda bisa melakukan ini:

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

Sayangnya pada saat itu, node yang dikembalikan akan memiliki duplikat berdasarkan jika lebih dari satu node memiliki nilai yang sama untuk health_time . Anda mungkin dapat menambahkan .distinct('node_group_id') itu bisa menjelaskannya, tapi saya tidak 100% positif.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghitung kueri gabungan

  2. MySQL:Batasi dua kolom sehingga salah satunya selalu NULL

  3. Memindahkan aplikasi Ruby/Rails/MRI ke JRuby

  4. mysql REPLACE INTO hanya beberapa bidang

  5. MySQL mengatur unique_checks, mengatur foreign_key_checks vs. mengubah tabel menonaktifkan kunci