SQL Server 2000 запрос - PullRequest
       17

SQL Server 2000 запрос

0 голосов
/ 19 сентября 2011

Я создал несколько таблиц, содержащих несколько записей от нескольких пользователей, чтобы я мог смоделировать обстоятельства.

Я создал следующий запрос:

SELECT 
    a.celid, a.callid, a.active, a.messagetext,
    b.jactive, a.cel_time, c.username, a.muserid 
FROM level2 a, calls b , login c 
WHERE a.callid = b.jid 
  AND a.muserid = c.loginid 
  AND b.jid = 92 
  AND a.win = 0 
  AND b.userid = 12 
ORDER BY 
    cel_time ASC

и получил следующее как результат

545 92  2   hello1  2   2011-09-18 16:32:17.000 phil01  21
546 92  1   hello2  2   2011-09-18 16:42:38.000 phil01  21
547 92  2   hello3  2   2011-09-18 16:59:08.000 danny   16
548 92  1   hello4  2   2011-09-18 20:46:21.000 phil01  21
549 92  1   hello5  2   2011-09-18 20:47:16.000 phil01  21  
550 92  1   hello6  2   2011-09-19 19:32:15.000 phil01  21  
551 92  1   hello7  2   2011-09-19 19:34:14.000 phil01  21  

но я на самом деле хочу, чтобы этот результат был различим на muserid и возвращал только две строки.

Я изучил описание разных значений, но, похоже, не смог этого достичь.

Как бы мне этого добиться?

1 Ответ

1 голос
/ 19 сентября 2011

Используйте этот SQL:

SELECT 
    a.celid, a.callid, a.active, a.messagetext,
    b.jactive, a.cel_time, c.username, a.muserid 
FROM level2 a
JOIN calls b ON a.callid = b.jid 
JOIN login c ON a.muserid = c.loginid 
JOIN 
  (SELECT l2.muserid, MAX(l2.cel_time) as max_time 
   FROM level2 l2 
   GROUP BY l2.muserid) d ON (d.muserid = a.muserid AND a.cel_time = d.max_time)
WHERE b.jid = 92 
  AND a.win = 0 
  AND b.userid = 12
...