Этот запрос возвращает все выбранные значения от сегодняшнего дня до 90 дней назад:MySQL выберите последний х дней между диапазоном
SELECT max(cases_visits.created_dt), users_profiles.account_num,
concat(cases.patient_first_initial,
cases.patient_middle_initial, cases.patient_last_initial) AS initials,
concat(users.first_name, ' ',users.last_name) as name
FROM cases
JOIN users_profiles
ON users_profiles.user_id=cases.doctor_id
JOIN cases_visits
ON cases.id=cases_visits.case_id
join users on users.id = cases.doctor_id
WHERE cases_visits.patient_visit_type = 'NP' && cases_visits.created_dt BETWEEN curdate() - INTERVAL 90 DAY AND SYSDATE()
group by users.first_name
я хотел бы найти запрос, который теперь будет выбирать ту же самую вещь, но только если записи в предыдущем запросе не существуют. ПРИМЕР: возвращать записи с> 90 дней назад, у которых нет записей за последние 90 дней.
Я попытался сделать это: (примечание, 2013-07-03 в запросе было 90 дней с первого раза, я побежал)
SELECT cases_visits.created_dt, users_profiles.account_num,
concat(cases.patient_first_initial,
cases.patient_middle_initial, cases.patient_last_initial) AS initials,
concat(users.first_name, ' ',users.last_name) as name
FROM cases
JOIN users_profiles
ON users_profiles.user_id=cases.doctor_id
JOIN cases_visits
ON cases.id=cases_visits.case_id
join users on users.id = cases.doctor_id
WHERE cases_visits.created_dt < '2013-07-03'
group by users.first_name
Это не дает мне правильные данные, я думаю, потому что мне нужно каким-то образом исключить записи, которые существуют за последние 90 дней.
ЭТО ЧТО ИМ ПЫТАЕТСЯ ДЕЛАТЬ: Выберите записи с aa = = 'NP' за последние 90 дней, тогда мне нужно выбрать записи, где нет значения np больше 90 дней, но эти записи должны быть полностью уникальными из первого запроса (то есть, у человека может быть дело в течение 90 дней, а 180 дней назад мне не нужны его записи.)
EDIT: Я забыл упомянуть, что пробовал этот запрос с ошибкой около «в»:
SELECT cases_visits.created_dt, users_profiles.account_num,
concat(cases.patient_first_initial,
cases.patient_middle_initial, cases.patient_last_initial) AS initials,
concat(users.first_name, ' ',users.last_name) as name
FROM cases
JOIN users_profiles
ON users_profiles.user_id=cases.doctor_id
JOIN cases_visits
ON cases.id=cases_visits.case_id
join users on users.id = cases.doctor_id
WHERE cases_visits.created_dt < '2013-07-03'
and cases_visits.patient_visit_type = 'NP'
and not in (select created_dt from cases_visits where cases_visits.patient_visit_type = 'NP' && cases_visits.created_dt BETWEEN curdate() - INTERVAL 90 DAY AND SYSDATE())
group by users.first_name
Ошибка в том, что у вас должно быть полевое имя между «и» и «не в» – AgRizzo
Нет. Я поймал эту ошибку и все еще закончил с неправильным набором результатов :( – Kisaragi