Ваш запрос не совпадает с вашими примерами данных.
Но, основываясь на вашем заявлении о проблеме, я подозреваю, что вы хотите:
select
act.ID_log,
act.ID_send_message,
act.action_date,
act.action,act.ID_email,
dvr.delivery_date,
act.email
from internal.actions as act
left join internal.deliveries as dvr
on dvr.ID_send_message= act.ID_send_message
and dvr.delivery_date >= '2017-01-01'
and dvr.delivery_date < '2018-01-01'
where act.ID_send_message != 0
Это принесет все записи из act
, которые выполнить условие в пункте where
вместе с информацией, поступающей из dvr
; если в dvr
нет совпадений, соответствующие столбцы будут показывать значения null
. Важной частью запроса является то, что все условия в таблице left join
должны быть указаны в предложении on
в join
(а не в предложении where
).