私たちは、訪問中の体重など、私たちのオフィスへのさまざまな訪問の詳細を示す患者用データベースを用意しています。その訪問の日付と患者の最初の訪問が可能な最大の値であるがX日数を超えない間の差に基づいて訪問(テーブルからの行)を返すレポートを生成したい。MySQL - 列+ Xの列を選択してください
これは混乱するので、例を試してみましょう。私のクエリで
visit_id | created | patient_id | weight
---------+---------------------+------------+-------
1 | 2006-08-08 09:00:05 | 10 | 180
2 | 2006-08-15 09:01:03 | 10 | 178
3 | 2006-08-22 09:05:43 | 10 | 177
4 | 2006-08-29 08:54:38 | 10 | 176
5 | 2006-09-05 08:57:41 | 10 | 174
6 | 2006-09-12 09:02:15 | 10 | 173
、私は「30日」のために、このレポートを実行したいた場合、それはに28日だから、私は、どこvisit_id = 5
行を返すようにしたいでしょう:のは、私は次の表は、patient_visits
と呼ばれているとしましょう未来、そして次の行は35日後のものですが、それはあまりにも多くです。
は、私はそのような自体にテーブルを結合し、またはそれに等しいかcreated + 30 days
未満であるcreated
の最大値を返すようにしようとするWHERE
句でサブクエリを作成するなど、物事の様々なを試してみましたが、私はしましたこの時点では失われているようだ。最後の手段として、すべてのデータをPHP配列にプルしてそこにロジックを構築することができますが、実際はそうではありません。
大きな写真はこれです:このデータベースには、約5000人の患者がおり、それぞれに何回も診察を受けています。私は最初の訪問からX日(すなわち、個々の患者の最初の訪問からのX日、任意のX日の期間ではなく、X日間)に移動したときのすべての患者の平均待機時間がどのようなものであったかを報告するためにレポートを作成したい)。私は上記を解決することができれば、私は休憩を取ることができることを期待しています。
言い換えれば、各patient_idについて*最も早い*訪問(それを* anchor *と呼ぶ)してから、アンカーから最も遠い*アンカーからX日以内の別の訪問を見つける必要があります。他のすべての訪問(アンカーに近いものとX日以上のもの)は破棄する必要があります。右? –