사용하는 DB는 PostgreSql 입니다.
visit라는 테이블이 있습니다.
컬럼은
id, user_id, page_idx, from_id, from_visit_date, to_id, to_visit_date, create_date 등이 있습니다.
구조는 A라는 회원이 B의 특정 페이지에 접속을 하면 방문 기록이 쌓입니다.
A 가 B의 페이지에 방문을 하면 from_~ 컬럼에는 A의 회원 정보가 저장되고
B가 A의 페이지에 방문을 할 때는 , A 회원의 방문 데이터에 to~ 컬럼에 B의 정보가 업데이트가 됩니다.
그러니까. A라는 회원의 페이지에 from 정보는 A라는 회원이 방문했던 페이지의 회원 정보가 저장되고,
A라는 회원의 to 페이지에는 A 회원의 페이지를 방문했던 회원의 정보가 저장이 됩니다.
그리고 page_idx는 A라는 회원이 자신의 페이지를 여러개 만들 수 있습니다.
즉 1페이지, 4페이지, 5페이지... 이런식으로 임의로 페이지를 만들수 있습니다.
방문 데이터가 쌓일 경우
id, user_id, page_idx, from_id, from_visit_date, to_id, to_visit_date, create_date
1. 22. 1 ~~~~~~~
2. 22 3 ~~~~~~~
3. 24. 1 ~~~~~~~
4. 45. 1 ~~~~~~~
위와같은 식으로 데이터가 쌓이게 됩니다.
이럴 경우 22번이라는 회원 아이디는 page_idx가 1,3 번의 두 페이지에 데이터가 저장이 됩니다.
여기서 페이지를 제외하고, 회원별로 마지막으로 저장된 값을 가져올려면 어떤식으로 쿼리를 짜야할까요?
distinct로도 안되고, group by로 해도 안됩니다.ㅠㅠ
전체 컬럼을 대상으로 page_idx가 중복이 안되는 값 중 마지막에 저장된 값들을 모든 컬럼을 포함해서 출력을 하고 싶습니다.