Я бы попробовал что-то вроде этого:
SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id WHERE B._id IS NULL OR B.date < date('now', '-21 days');
LEFT OUTER JOIN, обеспечивает отображение всех значений из таблицы автомобилей в выходных данных (включая те, которые несоответствовать критериям объединения - то есть тем, которые не имеют записи в таблице заданий).Критерии WHERE, фильтры либо для тех, у которых нет записи в таблице вакансий (B._id IS NULL
), либо для тех, которые старше 21 дня B.date < date('now', '-21 days')
Конечно, я предполагаю, чтобудет только 1 запись в таблице заданий для каждого автомобиля.Если их будет больше, вы, вероятно, захотите использовать MAX
для получения самой последней даты.
РАБОЧЕЕ РЕШЕНИЕ: SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id GROUP BY A._id HAVING B._id IS NULL OR MAX(B.date) < date('now', '-21 days');