Моя база данных на самом деле состоит не из клиентов и заказов, а из клиентов и рецептов на проверку их зрения (на случай, если кому-то интересно, почему я хочу, чтобы мои клиенты делали заказы реже!)
У меня есть база данных для сети оптиков, в таблице рецептов есть идентификационный номер отделения, идентификационный номер пациента и дата проверки зрения. Со временем у пациентов в базе данных появится более одного теста для проверки зрения. Как я могу получить список пациентов, у которых рецепт был введен в систему более одного раза в шесть месяцев. Другими словами, когда дата одного рецепта находится, например, в пределах трех месяцев от даты предыдущего рецепта для того же пациента.
Пример данных:
Branch Patient DateOfTest
1 1 2007-08-12
1 1 2008-08-30
1 1 2008-08-31
1 2 2006-04-15
1 2 2007-04-12
Мне не нужно знать фактические даты в результирующем наборе, и это не должно быть точно три месяца, просто список пациентов, у которых рецепт слишком близок к предыдущему рецепту. В приведенном примере данных я хочу, чтобы запрос возвращался:
Branch Patient
1 1
Такой запрос не будет выполняться очень регулярно, поэтому я не слишком беспокоюсь об эффективности. В нашей живой базе данных у меня есть четверть миллиона записей в таблице рецептов.