修改具有左连接和内连接的查询

时间:2011-09-05 21:04:08

标签: mysql

当满足以下条件时,下面的查询从MySQL表“comment”中总结points

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

  2. 发现所有submissionid的{​​{1}}都来自上面的#{1}}。

  3. 找到上面#2中loginid s的所有commentid,并将相应的submissionid相加。

  4. 现在,我怎样才能创建一个不同的查询来返回上面#3中所有points的数组而不是总结comment

    以下是涉及的MySQL表:

    登录:

    point

    提交内容:

    logind username created activated

    注释:

    submissionid loginid

    查询:

    commentid submissionid points comment

1 个答案:

答案 0 :(得分: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的相反顺序替换,这是反向时间顺序的近似值(换句话说,最近的第一个)。