このクエリは、今日の日付から 90 日前までの選択されたすべての値を返します。
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 日間に存在するレコードを何らかの方法で除外する必要があるため、これでは適切なデータが得られません。
これは私がやろうとしていることです:過去90日間のaa値= to 'NP'のレコードを選択してから、90日を超えてnp値がないレコードを選択する必要がありますが、これらのレコードは完全に最初のクエリから一意です (つまり、個人は 90 日以内にケースを持っている可能性があり、180 日前にケースを持っていれば、彼の記録は必要ありません。)
編集:「in」の近くでエラーが発生してこのクエリを試したことを忘れていました:
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