﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30209	Union with group by don't generate correct Subquery	Nikolas	Can Sarıgöl	"reopen: https://code.djangoproject.com/ticket/30203

Simplified for example:
have simple query


{{{
    qs1: QuerySet = User.objects.filter(id__gt=10)

    qs1 = qs1.values('is_active').annotate(id=Count('pk'))
}}}

generate:

{{{
SELECT ""suser_customuser"".""is_active"",
       COUNT(""suser_customuser"".""id"") AS ""id""
FROM ""suser_customuser""
WHERE ""suser_customuser"".""id"" > 10
GROUP BY ""suser_customuser"".""is_active""
}}}

all correct, now i wont use union

{{{
    qs1: QuerySet = User.objects.filter(id__gt=10)
    qs2: QuerySet = User.objects.filter(id__lt=10)

    qs1 = qs1.values('is_active').annotate(id=Count('pk'))

}}}

now get not correct SQL:

{{{
  (SELECT ""suser_customuser"".""is_active"",
          ""suser_customuser"".""id""
   FROM ""suser_customuser""
   WHERE ""suser_customuser"".""id"" > 10)
UNION
  (SELECT ""suser_customuser"".""is_active"",
          ""suser_customuser"".""id""
   FROM ""suser_customuser""
   WHERE ""suser_customuser"".""id"" < 10)
}}}


expected:

{{{
select *
from
  ((SELECT ""suser_customuser"".""is_active"",
          ""suser_customuser"".""id""
   FROM ""suser_customuser""
   WHERE ""suser_customuser"".""id"" > 10)
UNION
  (SELECT ""suser_customuser"".""is_active"",
          ""suser_customuser"".""id""
   FROM ""suser_customuser""
   WHERE ""suser_customuser"".""id"" < 10)) U0
group by is_active, id
}}}


i think this is bug, if not why not show any warning or exception?
or just say how rewrite query for correct use Subquery

screenshot: http://dl4.joxi.net/drive/2019/02/24/0002/0003/143363/63/2eab4a5318.jpg"	Bug	closed	Database layer (models, ORM)	dev	Normal	duplicate	union, group by	Can Sarıgöl	Accepted	1	1	0	0	0	0
