최신 sqlserver_ado 라이브러리를 사용하여 SQL Server 2005 db에서 Django 1.1.1을 사용하고 있습니다.SQL 오류를 생성하는 Django 집계 쿼리
models.py이 포함됩니다 :
뷰에서class Project(models.Model):
name = models.CharField(max_length=50)
class Thing(models.Model):
project = models.ForeignKey(Project)
reference = models.CharField(max_length=50)
class ThingMonth(models.Model):
thing = models.ForeignKey(Thing)
timestamp = models.DateTimeField()
ThingMonthValue = models.FloatField()
class Meta:
db_table = u'ThingMonthSummary'
, 나는 25 가지 포함 '일'이라는 검색어 세트를 검색 한 :
things = Thing.objects.select_related().filter(project=1).order_by('reference')
을 내가 다음에 집계 쿼리를 수행 할 특정 기간 동안 처음 20 개 항목에 대해 평균 ThingMonthValue를 가져오고 마지막 5 자리에 대해 동일한 값을 가져옵니다.
처음 20 일 경우 :
averageThingMonthValue = ThingMonth.objects.filter(thing__in=things[:20],timestamp__range="2009-01-01 00:00","2010-03-00:00")).aggregate(Avg('ThingMonthValue'))['ThingMonthValue__avg']
이 작동하고 원하는 값을 반환합니다.
averageThingMonthValue = ThingMonth.objects.filter(thing__in=things[20:],timestamp__range="2009-01-01 00:00","2010-03-00:00")).aggregate(Avg('ThingMonthValue'))['ThingMonthValue__avg']
을하지만 내가는 SQL 오류 얻을 : 지난 5
내가 할 '. 하나의 표현이 EXISTS와 하위 쿼리가 도입되지 않을 때 선택 목록에서 지정 될 수 있습니다' 장고에 의해 사용되는SQL 쿼리
읽SELECT AVG([ThingMonthSummary].[ThingMonthValue]) AS [ThingMonthValue__avg]
FROM [ThingMonthSummary]
WHERE ([ThingMonthSummary].[thing_id] IN
(SELECT _row_num, [id] FROM (SELECT ROW_NUMBER() OVER (ORDER BY [AAAA].[id] ASC) as _row_num,
[AAAA].[id] FROM (SELECT U0.[id] FROM [Thing] U0 WHERE U0.[project_id] = 1) AS [AAAA]) as QQQ
where 20 < _row_num) AND [ThingMonthSummary].[timestamp] BETWEEN '01/01/09 00:00:00' and '03/01/10 00:00:00')
가 하나 개 것들의 조각이 아닌 초 동안 작동 왜 어떤 생각? 나는 체크했다. 그리고 2 개의 조각은 원하는 물건을 바르게 포함한다.
이 내가 무슨 짓을했는지 기본적으로, 그것은 추한지만 작동합니다. 나는 sqlserver_ado 관리자들과 티켓을 모으기 때문에 잘하면이 문제가 해결 될 것이다. 감사! – meepmeep