mySQL

2016-03-22 6 views
0

ile farklı kimlikleri ile en son girişleri seçin, 2 tablo var.mySQL

Tablo: Measuremements

PersonID - Değer - Zaman damgası -

TypeId

Tablo: Ölçüm tipi

TypeId - Ölçüm İsim ben 2 En son görüntülemek istediğiniz

2 farklı TypeID'den giriş. Bu yüzden, en son zaman damgasıyla TypeID 1'den bir değer ve en son zaman damgası olan TypeID 2'den bir Değer seçmem gerekiyor. Ayrıca, tabloların arasında TypeID kullanarak ölçümlerin isimlerini almalıyım. Seçimimi belirli bir PersonID ile sınırlamak istiyorum.

Bunu yapmak için farklı yollar denedim, ancak ne yapacağımı anlamıyorum.

SELECT 
    m.value, 
    m.timestamp, 
    m_t.measurement_name 
FROM measurements m 
INNER JOIN measurement_type m_t ON m.typeid = m_t.typeid 
GROUP BY m.typeid 
ORDER BY timestamp DESC 

ilk sorum, bu yüzden gerekirse ben daha iyi açıklamak için deneyebilirsiniz:

anda benim kodudur D

+0

Geçerli kodunuzdaki sorun nedir? Şimdi ne elde edeceksin? – skrilled

cevap

0

Her biri için max damgası almak için bir alt sorgu kullanabilirsiniz kendisine geri sonucunu yazıp join:

select m.typeid, m.value, m.timestamp, mt.measurement_name 
from measurements m 
    join (select max(timestamp) maxtimestamp, typeid 
      from measurements 
      group by typeid) m2 on m.timestamp = m2.maxtimestamp 
          and m.typeid = m2.typeid 
    join measurement_type mt on m.typeid = mt.typeid 
+0

Çok teşekkür ederim, bu sadece ihtiyaç duyduğum gibi çalışıyor, sonsuza kadar bu sorunla mücadele ediyor, sen benim günümü kurtardın: D – nurre

0

Sen verilen tip kimliği için en son girdiyi almak için aşağıdaki sorguyu kullanabilirsiniz:

select m.personID, m.value, m.typeID, mt.measurement_name 
from measurements m join measurements_type mt on m.typeID = mt.typeID 
where m.typeID = ? 
order by m.timestamp desc limit 1; 
+0

Bu da işe yarıyor, ama son 6 girdiden en son girişi istiyorum ve her tür başına yalnızca bir giriş istiyorum Çözüm biraz daha iyi çalışıyor, ama yine de teşekkürler, bu SQL'i çok daha iyi anlamamı sağladı: D – nurre