Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

706
Vistas
unir 3 tablas conjunto de consultas Python Django

Necesito unir 3 tablas en una consulta en Django.

Tengo dos consultas en MySQL, ambas devuelven el mismo resultado, no importa usar una u otra consulta:

consulta con donde

 SELECT dv.Division, COUNT(or.`ct_id`) AS `orders`, COUNT(CASE WHEN gr.`Status` = 'on going' THEN 1 ELSE NULL END) AS `ge_on_going`, FROM order or, zone zo, cctt ct, division dv WHERE or.zone_id = zo.id AND or.cctt_id = ct.id AND zo.division_id = dv.id GROUP BY dv.Division

Consulta con unión

 SELECT dv.Division, COUNT(or.`ct_id`) AS `orders`, COUNT(CASE WHEN gr.`Status` = 'on going' THEN 1 ELSE NULL END) AS `ge_on_going`, FROM order or INNER JOIN cctt ct ON (or.cctt_id = ct.id) INNER JOIN zone zo ON (or.zone_id = zo.id) INNER JOIN division dv ON (zo.division_id = dv.id) GROUP BY dv.Division

¿Cómo se puede traducir esa consulta a Django? Tengo esto, pero no funciona:

MODELOS

 class DivisionModel(models.Model): id = models.PositiveIntegerField(db_column='Id', primary_key=True) division = models.CharField(db_column='Division', max_length=50) class ZoneModel(models.Model): id = models.AutoField(db_column='Id', primary_key=True) zone = models.CharField(db_column='Zone', max_length=50) division = models.ForeignKey(DivisionModel, on_delete=models.DO_NOTHING, db_column='Division_id') class OrderModel(models.Model): zone = models.ForeignKey(ZonaModel, on_delete=models.DO_NOTHING, db_column='Zone_Id') cctt = models.ForeignKey(CCTTModel, on_delete=models.DO_NOTHING, db_column='CCTT_Id') fservice = models.DateTimeField(db_column='FServicio') class CCTTModel(models.Model): status = models.CharField(db_column='Status', max_length=23)
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Puedes probar así con annotation :

 from django.db.model import Q, Count DivisionModel.objects.values('division').annotate(orders=Count('zonemodel__ordermodel__cctt'), ge_on_going=Count('zonemodel__ordermodel__cctt', filter=Q(zonemodel__ordermodel__cctt__status="on going"))).values('division', 'order', 'ge_on_goin')
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda