Как выбрать только в пределах указанного c диапазона при использовании JOIN? - PullRequest
0 голосов
/ 20 апреля 2020

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

Product
-------
name, mrp, link, dateCreated
book 1, 30, http://.., 1583020800000
book 2, 40, http://.., 1583107200000

Event
-----
name, url, count
book 2, http://.., 3
book 5, http://..

Я хочу объединить обе таблицы и выбрать все продукты в месяц марта [1583020800000, 1585699200000)

select name, mrp, url from product left join event on product.link = event.url AND mrp > 0 AND dateCreated >= 1583020800000 AND dateCreated < 1585699200000

Выше SQL возвращает все строки из первой таблицы. Условия AND не работают. Как запросить это?

1 Ответ

1 голос
/ 20 апреля 2020

Вы пробовали:

select name, mrp, url 
from product left join event on product.link = event.url 
where product.mrp > 0 AND dateCreated >= 1583020800000 AND dateCreated < 1585699200000

Если вы используете левое соединение, вы получаете каждый результат левой стороны соединения (продукта) и получаете ноль для правой стороны.

Если вы добавляете условие where, вы фильтруете объединенные результаты.

Обратите внимание на индекс. Если у вас много записей, индекс dateCreated ускоряет запрос.

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