Левое присоединение: Установите нулевое значение, если в правой таблице нет записей
У меня есть две таблицы user
и point
, которые имеют 1-N
отношения друг с другом.
Левая таблица: user
id | name |
---|---|
1 | John |
2 | Willem |
Правый стол: point
user | date | score |
---|---|---|
1 | 2021/12/01 | |
1 | 2021/12/02 | |
2 | 2021/12/01 | |
2 | 2021/12/03 |
Как я могу применить Left Join
, который, как выведено ниже, если у него нет пользователя в нужной таблице в соответствии с полем date
, установит score=0
.
Желаемый выход в соответствии с date
:
user | date | score |
---|---|---|
1 | 2021/12/01 | 5 |
1 | 2021/12/02 | 3 |
1 | 2021/12/03 | 0 <------ |
2 | 2021/12/01 | 5 |
2 | 2021/12/02 | 0 <------- |
2 | 2021/12/03 | 4 |
Я сделал следующую попытку, но она только возвращает пользователей, которые имеют запись в point
таблице.
from django.db import connection
cursor = connection.cursor()
cursor.execute(
'''SELECT users.id,users.username, point.sp FROM users
LEFT JOIN point ON users.id = point.user_id
WHERE point.date <= '{0}' and point.date >= '{1}';'''.format(sprint.end, sprint.start))
row = cursor.fetchall()