2013-04-23 3 views
0

에 타임 스탬프를 추가하는 방법을 조언이 필요 최신 데이터만으로 결과를 얻을 수 있습니다. 그래서 사용자 테이블에 타임 스탬프를 추가했습니다.SQL은이 코드가이 쿼리

이 코드를 수정하면 모든 사용자 (users.phoneMac)에 대한 최신 타임 스탬프의 데이터 만 가져옵니다 (동일한 phoneMac에 대해 1 행 이상의 데이터가있을 수 있음). 그런 다음 나머지 계산을 수행하십시오 .

+0

타임 스탬프 열의 이름은 무엇입니까? 'ORDER BY timestamp DESC LIMIT 1'은 최신 레코드 만 가져옵니다. –

+0

정말 [so]에 관한 이런 종류의 프로그래밍 질문을해야합니다. – Iain

+3

어떤 RDBMS (Oracle, SQLServer, MySQL 등)입니까? –

답변

1

"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으로 새로운 조인 구문 정말입니다를 사용하여. 훨씬 더 좋습니다.)

관련 문제