Bu ziyaret sırasında ağırlıkları gibi, ofisimize çeşitli ziyaretlerinin ayrıntılarını gösteren hastalar için bir veritabanımız var. Bu ziyaretin tarihi ile hastanın ilk ziyaretinin mümkün olan en büyük değer olduğu ancak günlerin X sayısını geçmediği arasındaki farka dayanarak ziyareti (tablodan bir satır) döndüren bir rapor oluşturmak istiyorum.MySQL - Sütun + X> sütunu ile satır seçin Satır
Bu kafa karıştırıcı, bu yüzden bir örnek çalışmama izin verin. o 28 gün içine, çünkü ben "30 gün" için bu raporu çalıştırmak isteyen olsaydı, ben satır nerede visit_id = 5
dönmek ister ki, benim sorguda
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
: ı Aşağıdaki tabloda patient_visits
denilen var diyelim gelecek ve gelecek sıra 35 gün olacak, bu da çok fazla.
Böyle tabloyu kendisiyle katılmadan ya da eşit veya created + 30 days
daha azdır created
maksimum değer döndürmek için denemek için WHERE
deyimindeki bir alt sorguyu oluşturma gibi şeyler, çeşitli çalıştı ama ettik Bu noktada bir kayıp gibi görünüyor. Son çare olarak, tüm verileri bir PHP dizisine çekebilir ve orada bir mantık oluşturabilirim, ama gerçekten istemiyorum.
Büyük resmi şudur: Veritabanında her biri herhangi bir sayıda ofis ziyareti olan yaklaşık 5.000 hasta vardır. İlk ziyaretten X gününe çıkarken (yani, her bir hastanın ilk ziyaretinden X gün, keyfi bir X-gün periyodu değil) birleştirilmiş tüm hastalar için ortalama bekleme kaybının ne olduğunu anlatmak için raporu oluşturmak istiyorum.). Umarım yukarıdaki çözüme kavuşursam geri kalanını halledebilirim.
Bunu tekrar söyleyeyim: her hasta_kullanıcı için * en erken * ziyareti yapmalıyız (hadi buna * çapa * diyelim), daha sonra başka bir ziyaret bulunuz * en uzak * çapadan ancak en fazla X gün olmaktan . Diğer tüm ziyaretler (yani, çapa ve X günlerinin üstündekilere daha yakın olanlar) atılmalıdır. Sağ? –