"strenght"필드의 최대 값을 이미 선택하여 이에 합류 했으므로 타임 스탬프 필드에 동일한 접근 방식을 다시 사용하지 않는 것이 어떻습니까? 뭔가 같은 : 그런데
SELECT Users.phoneMac, Users.apMac, Locations.Lon, Locations.Lat
FROM Locations
INNER JOIN Users
ON Users.apMac = Locations.apMac
INNER JOIN (
SELECT u.phoneMac, max(u.strenght) AS most
FROM Locations l
INNER JOIN Users u ON u.apMac = l.apMac
GROUP BY u.phoneMac) AS ij
ON ij.phoneMac = Users.phoneMac
AND Users.strenght = ij.most
INNER JOIN (
SELECT u2.phoneMac, max(u2.timestampfield) AS latest
FROM Locations l2
INNER JOIN Users u2 ON u2.apMac = l2.apMac
GROUP BY u2.phoneMac) AS ijk
ON ijk.phoneMac = Users.phoneMac
AND Users.timestampfield = ij.latest;
(이전에 가입 쉼표로 구문과 절은 어렵게 논리를 이해하고, 때때로 잘못된 논리를하게 할 수있는 곳이 ON으로 새로운 조인 구문 정말입니다를 사용하여. 훨씬 더 좋습니다.)
타임 스탬프 열의 이름은 무엇입니까? 'ORDER BY timestamp DESC LIMIT 1'은 최신 레코드 만 가져옵니다. –
정말 [so]에 관한 이런 종류의 프로그래밍 질문을해야합니다. – Iain
어떤 RDBMS (Oracle, SQLServer, MySQL 등)입니까? –