объединить две таблицы вернуть пустое значение, если не найдено MYSQL - PullRequest
0 голосов
/ 02 апреля 2020

Я столкнулся с проблемой в запросе MySQL. Я использую левое соединение в своем запросе для объединения двух таблиц, но мне не удалось получить ожидаемый результат.

Предположим, что моя пользовательская таблица

Таблица пользователей

Id  Name
1   User 1
2   User 2
3   User 3
4   User 4
5   User 5
6   User 6
7   User 7

Таблица посещаемости

Id  user_id date
1   1   2020-03-30
2   2   2020-03-30
3   3   2020-03-30
4   4   2020-03-30
5   7   2020-03-30
6   1   2020-03-31
7   3   2020-03-31
8   5   2020-03-31
9   6   2020-03-31
10  1   2020-04-01
11  2   2020-04-01
12  3   2020-04-01

Мой ожидаемый результат

1   User 1  2020-04-01
2   User 2  2020-04-01
3   User 3  2020-04-01
4   User 4  NULL
5   User 5  NULL
6   User 6  NULL
7   User 7  NULL

Вот мой запрос

SELECT og_users.id, og_users.display_name, pacra_attendance.date, pacra_attendance.log_in_time
FROM og_users

LEFT JOIN pacra_attendance
ON og_users.id = pacra_attendance.user_id

WHERE og_users.is_active = 1 AND pacra_attendance.date = '2020-04-01'

Пожалуйста, помогите мне out.

Спасибо

1 Ответ

2 голосов
/ 02 апреля 2020

Вы можете использовать это:

SELECT og_users.id, og_users.display_name, pacra_attendance.date, pacra_attendance.log_in_time
FROM og_users LEFT JOIN pacra_attendance
  ON og_users.id = pacra_attendance.user_id AND pacra_attendance.date = '2020-04-01'
WHERE og_users.is_active = 1 

демо на dbfiddle.uk

Вы можете переместить условие даты с WHERE до LEFT JOIN. Использование условия даты на WHERE похоже на использование INNER JOIN.

...