: friends
, locations
, friend_location
SQL 쿼리 나는 세 개의 테이블이 다 대다 관계
friend_location
가 friends
와 locations
사이의 다 대다 관계를 허용하는 테이블을 조인, 그래서 테이블은 다음과 같이 보일 것이다 :
친구
ID | Name
1 | Jerry
2 | Nelson
3 | Paul
위치 내가하고 싶은 무엇
ID | Date | Lat | Lon
1 | 2012-03-01 | 34.3 | 67.3
2 | 2011-04-03 | 45.3 | 49.3
3 | 2012-05-03 | 32.2 | 107.2
friend_location
Friend_ID | Location_id
1 | 2
2 | 1
3 | 3
2 | 2
는 각 친구의 최신 위치를 얻을 수있다.
select f.id , f.name , last_known_date
from friends f, (
select distinct fl.friend_id as friend_id, fl.location_id as location_id, m.date as last_known_date
from friend_location fl
inner join (
select location.id as id, max(date) as date
from location
group by location.id
) m
on fl.location_id=m.id
) as y
where f.id=y.friend_id
어떤 제안을 크게 감상 할 수있다 :
이 내가 여러 사례보고 후 시도한 것입니다,하지만 많은 결과를 반환하지 올바른
ID | Friend | Last Know Location | last know date
1 | Jerry | 45.3 , 49.3 | 2011-04-03
2 | Nelson | 34.3 , 67.3 | 2012-03-01
3 | Paul | 32.2 , 107.2 | 2012-05-03
결과 .
사용중인 데이터베이스 유형을 나열하십시오.창 함수는 훨씬 간소화되고 간결하게 만들어지기 때문에 응답에 크게 영향을줍니다 (그러나 모든 데이터베이스에서 사용할 수있는 것은 아닙니다). –
마지막으로 알려진 날짜를 별도의 테이블로 이동하는 것이 좋습니다 – cordialgerm
PostgrisSQL 사용. 감사. – Cysneros