모든 사용자의 다중 표 예제에 대한 마지막 항목을 선택하십시오

StackOverflow https://stackoverflow.com//questions/23028940

  •  21-12-2019
  •  | 
  •  

문제

다음 테이블을 감안할 때 테이블 메시지

id message   time_send             
14 "first"   2014-02-10 22:16:31   
15 "second"  2014-02-14 09:35:20
16 "third"   2014-02-13 09:35:47
17 "fourth"  2014-03-10 22:16:31
18 "fifth"   2014-03-14 09:35:20
19 "sixth"   2014-04-12 09:35:47
20 "seventh" 2014-04-13 09:35:47
21 "eighth"  2014-04-14 09:35:47
.

테이블 message_owner

id message_id owner_id cp_id
1  14         1        4
2  14         4        1
3  15         12       4
4  15         4        12
5  16         4        1
6  16         1        4
7  17         12       4
8  17         4        12
9  18         4        1
10 18         1        4
11 19         12       4
12 19         4        12
13 20         12       1
14 20         1        12
15 21         12       7
16 21         7        12
.

주어진 소유자에 대해 모든 카운터 파티 (cp_id)로 가장 최근의 메시지를 쿼리하고 싶습니다. 예를 들어 Owner_ID= 4는 다음과 같은 출력을 원합니다.

id message   time_send            owner_id  cp_id
18 "fifth"   2014-03-14 09:35:20  4         1
19 "sixth"   2014-02-13 09:35:47  4         12
.

하나의 테이블로 많은 예를 볼 수 있지만 여러 가지 예에서는 이들을 다루지 못할 수 없습니다.

edit1 : 더 많은 항목 추가

도움이 되었습니까?

해결책

이렇게해야합니다 :

SELECT m.id, m.message, mo.owner_id, mo.cp_id
   FROM message m
   JOIN message_owner mo ON m.id=mo.message_id
   WHERE mo.owner_id=4
   AND   m.time_send=(
      SELECT MAX(time_send)
      FROM message m2
      JOIN message_owner mo2 ON mo2.message_id=m2.id
      WHERE mo2.owner_id=mo.owner_id
      AND   mo2.cp_id   =mo.cp_id
   )
.

... Timestamp 컬럼에있는 위치를 올바르게 작동하지 않을 수 있습니다.

공동이없는 동일한 예 :

SELECT m.id, m.time_send, m.message, mo.owner_id, mo.cp_id
FROM message m, message_owner mo
WHERE m.id        = mo.message_id
AND   mo.owner_id = 4   
AND   m.time_send = (
   SELECT MAX(time_send)
   FROM message m2, message_owner mo2
   WHERE mo2.message_id = m2.id
   AND   mo2.owner_id   = mo.owner_id
   AND   mo2.cp_id      = mo.cp_id
);
.

http://sqlfiddle.com/#.2/558d7/4 <./ P>

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top