Как сделать запрос из таблиц, соединенных с базой данных и использовать между датами или диапазоном? - PullRequest
0 голосов
/ 24 февраля 2020

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

Мой запрос:

SELECT * 
FROM userdetails 
RIGHT JOIN returndocs on returndocs.EmailAddress = userdetails.EmailAddress 
WHERE DateSubmitted BETWEEN '2020-01-05' and '2020-02-10' 

Я хочу выбрать все данные в таблице userdetails и присоединиться к таблице returndocs, которая содержит информацию, отфильтровав DateSubmitted в таблице returndocs. Если я использую этот запрос, он возвращает все данные из таблицы returndocs и userdetails, таблица будет пустой. Ниже приведены результаты запроса.

Results from the query are here

1 Ответ

1 голос
/ 24 февраля 2020

Вы, похоже, хотите, чтобы LEFT JOIN начинался с userdetails:

SELECT * 
FROM userdetails ud LEFT JOIN
     returndocs rd
     ON rd.EmailAddress = ud.EmailAddress AND
        rd.DateSubmitted BETWEEN '2020-01-05' AND '2020-02-10' ;

Обратите внимание, что условие для DateSubmitted должно быть в предложении ON. В противном случае WHERE изменит внешнее соединение на внутреннее, отфильтровав несопоставимые значения.

Я бы порекомендовал записать условие datesubmitted в виде:

SELECT * 
FROM userdetails ud LEFT JOIN
     returndocs rd
     ON rd.EmailAddress = ud.EmailAddress AND
        rd.DateSubmitted >= '2020-01-05' AND 
        rd.DateSubmitted < '2020-02-11' ;

Это будет работать даже если DateSubmitted имеет компонент времени.

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