2011-09-05 119 views
0

當滿足以下條件時,下面的查詢從MySQL表「comment」中總結points修改具有左連接和內連接的查詢

  1. 找到l.username = '$profile'時的loginid

  2. 發現所有submissionid都有上面#1的loginid

  3. 找到所有commentid與上面#2的submissionid s,並將相應的points相加。

現在,我怎麼能做出一個不同的查詢來返回上面#3中所有comment的數組而不是總結point

這裏所涉及的MySQL表:

登錄:

logind username created activated

提交:

submissionid loginid

評論:

commentid submissionid points comment

查詢:

SELECT 
    l.loginid, 
    l.username, 
    l.created, 
    l.activated, 
    COALESCE(scs.total, 0) AS commentsreceivedvalue 

FROM login l  


LEFT JOIN (
    SELECT S2.loginid, SUM(C2.points) AS total 
FROM submission S2 
INNER JOIN comment C2 
ON S2.submissionid = C2.submissionid 
GROUP BY S2.loginid 
) scs ON scs.loginid = l.loginid 


WHERE l.activated = 1 
AND l.username = '$profile' 


GROUP BY l.loginid 
ORDER BY commentsreceivedvalue DESC 

回答

0

是不是很簡單:

SELECT l.loginid, l.username, l.created, l.activated, scs.commentid, scs.comment 
    FROM login AS l 
    LEFT JOIN (SELECT S2.loginid, c2.commentid, c2.comment 
       FROM submission AS S2 
       JOIN comment AS C2 ON S2.submissionid = C2.submissionid 
      ) AS scs ON scs.loginid = l.loginid 
WHERE l.activated = 1 
    AND l.username = '$profile' 
ORDER BY scs.commentid DESC; 

外GROUP BY在原來沒有做什麼有用的東西。原文中的ORDER BY在這裏由與註釋ID相反的順序代替,這是對反向時間順序(最近的第一個換句話說)的近似值。