Hello,
Maybe you mean:
>>> result =
A.objects.select_related().annotate(num_b=Count('b')).aggregate(max_num_b=Max(num_b))
>>> result['max_num_b']
In that case, you take each A value, count for each its related B
occurences, then retain the highest count.
Regards,
Le 06/04/2011 16:25, bernatbonet a écrit :
Tengo el siguiente modelo de datos:
class A(models.model):
desc: model.CharField()
class B(models.model):
a: model.ForeignKey('A')
desc: models.CharField()
Tengo una vista que quiere sacar la siguiente select:
select max(num_a) as max_num_a from (select a, count(desc) as num_a
from B group by a) as x;
He intentado hacer lo siguiente:
result =
B.objects.values('a').annotate(num_a=Count('a')).aggregate(Max('num_a'))
Esto me da el siguiente error:
1064, "You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'FROM (SELECT `B`.a` AS `a`, COUNT(`a' at line 1")
Si en lugar de obtener el máximo nos quedamos en la agrupación
funciona:
result = B.objects.values('a').annotate(num_a=Count('a'))
y nos devuelve: {'a': 1L, 'num_a': 9}{'a': 2L, 'num_a': 6}{'a': 3L,
'num_a': 4}
No se que estoy haciendo mal, ni si hay otra forma de resolver este
problema.
Si alguien se ha encontrado con el mismo problema y lo ha resuelto, le
agradecería mucho que me diera unas pistas para solventarlo.
Muchas gracias por todo.
--
You received this message because you are subscribed to the Google Groups "Django
users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.