SQL - объединение двух таблиц, отображение всех данных из таблицы tbl1 и данных из таблицы tbl2 в зависимости от условий - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь показать полный список всех пользователей в моей БД, а также дополнительную информацию из второй таблицы в зависимости от того, есть ли у них запись во второй таблице

Я использую MySQL, я попробовал несколько оставшихсяjoin / right join union, но ничего у меня не работает

SELECT users.id, users.name, success.URL_ID, success.docreqid FROM users
LEFT JOIN success ON users.id = success.userid
where docreqid IS NULL
union
SELECT users.id, users.name, success.URL_ID, success.docreqid FROM users
RIGHT JOIN success ON users.id = success.userid
where docreqid = 1;

У меня небольшая таблица из 10 пользователей.Только один пользователь в моей базе данных имеет запись в таблице успеха против docreqid '1'.Мне нужна таблица ВСЕХ пользователей и URL_ID для их формы, если они отправили ее.

Приведенный выше код отлично подходит для этого.

Если я изменю последнюю строку на:

where docreqid = 2;

Я получил только 9 результатов (отсутствует пользователь с записью для docreqid '1').

Я бы хотел, чтобы в этой таблице отображались все 10 пользователей и 'NULL' в URL_ID &столбцы docreqid, пока они не выполнили необходимое действие.

1 Ответ

0 голосов
/ 19 мая 2019

A left join должен делать то, что вы хотите:

SELECT u.id, u.name, s.URL_ID, s.docreqid
FROM users u LEFT JOIN
     success s
     ON u.id = s.userid AND s.docreqid = 1;

LEFT JOIN возвращает все строки в первой таблице - нет WHERE не фильтрует результаты. ON соответствует только строкам в success, которые удовлетворяют дополнительному условию в предложении ON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...