Django: JOIN два результата оператора SELECT
MYSQL - работает нормально
SELECT
*
FROM
(SELECT ...) u
LEFT JOIN
(SELECT ...) e
ON
(u.id = e.employee_id)
DJANGO
u = user_with_full_info.objects.values(
'id'
).filter(
branch = team['branch__id'],
team = team['team__id'],
position__lt = team['position__id'],
valid = 1
)
d = staff_review.objects.values(
'employee'
).annotate(
last_date=Max('date'),
dcount=Count('employee')
).filter(
month = month()
)
e = staff_review.objects.values(
'performance__name',
'performance__style',
'employee__user__id',
'employee__user__salary_number',
'employee__user__last_name',
'employee__user__mid_name',
'employee__user__first_name',
'date'
).filter(
month = month(),
employee__id__in = Subquery(u.values('id')),
date__in = Subquery(d.values('last_date')),
).order_by(
'employee__id'
)
С помощью MYSQL я получил: | employee_id | performance_id | | -------- | -------------- | | 3 | 2 | | 1 | 3 | | 4 | NULL |
С помощью Django я получил: | employee_id | performance_id | | -------- | -------------- | | 3 | 2 | | 1 | 3 |
Как я могу это исправить? Как сделать левое соединение "u" с "e"?