2016-05-07 4 views
1

Ich habe eine AbfrageHolen Sie sich der letzte Eintrag auf dem LINKEN eine Tabelle JOIN

SELECT cm.posted_at, s.id, s.name, s.device, co.status, co.last_seen, d.device_id 
FROM station s LEFT JOIN chat_online co 
ON s.id = co.station_id AND s.device = co.device_id 
LEFT JOIN device d ON s.device=d.id 
LEFT JOIN chat_message cm ON cm.station_id=s.id 
WHERE s.status='1' AND (co.role='station' OR co.role IS NULL) 
GROUP BY s.id 
ORDER BY cm.posted_at DESC 

wo in chat_message für eine Station mehrere Einträge haben, während über Abfrage ausgeführt Ich bin den ersten Eintrag von chat_message bekommen zu jedem STATION_ID entspricht. Wie kann ich den letzten Eintrag von chat_message abrufen, während links die chat_message mit Verbindungsstation

Vielen Dank im Voraus

Antwort

2

Wie ich verstanden, Sie haben Daten wie, enter image description here

und Sie müssen wie folgt abgefragt werden,

select cm.posted_at, s.id, s.name, s.device from station s 
 
JOIN  (
 
       SELECT MAX(posted_at) posted_at,stationId 
 
       FROM  chat_message 
 
       GROUP BY stationId 
 
     ) cm ON (cm.stationId = s.id)

enter image description here