@Talany
Пытаюсь освоить web ;)

Как выбрать записи из нескольких таблиц с условием подсчета дней?

Доброго времени суток!
Пытаюсь реализовываю проект, и возник затык с запросом да и вообще со структурой БД
В общем есть документы и срок их действия для каждого юзера, за определенное количество дней до завершения срока действия надо отправить уведомление, отправляется 2 раза к примеру за 15дней и 7 дней (для каждого документа свои значения)

Есть таблица documents (id, name) Содержит название документов
также таблица Alert (id, branch_id, document_id, alert1, alert2) где alert1 и alert2 (integer) количество дней уведомления
таблица users_documents (id, user_id, document_id, expired_date, text)

Вопрос: При выборке юзеров по определенным критериям, надо поверить документы, если таблица users_documents не содержит записей для этого юзера то к примеру вернуть null, если TO_DAYS(users_documents.expired_date) - TO_DAYS(NOW()) <= alert.alert1 то к примеру 1 и т.д
Пытаюсь так
select users.id,
	users.first_name,
    CASE
		WHEN TO_DAYS(users_documents.expired_date) is null THEN null
		WHEN TO_DAYS(users_documents.expired_date) - TO_DAYS(NOW()) <= alert.alert1 THEN '2'
		WHEN TO_DAYS(users_documents.expired_date) - TO_DAYS(NOW()) <= alert.alert2 THEN '1'
		ELSE "ok"
	END as asd
from users
left join users_documents on users.id = users_documents.user_id
left join documents on user_document.document_id = documents.id
left join alert on users.branch_id = alert.branch_id and documents.id = alert.document_id
where users.branch_id = 1  ....

Но выводит с таблицы users количество равное кол документов

Надеюсь объяснил что надо )))
Буду рад любой помощи, может даже структуру правильнее поменять
Заранее благодарю!
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы