group by子句帮助

时间:2009-08-18 18:13:34

标签: sql sql-server

我正在编写一个项目的facebook类请求页面。我坚持在所有请求打印页面中分组请求。

我的sql为

SQL = "SELECT R.REQUESTID, R.BYID, R.TOID, R.TYPE, R.DATEENTERED, M.MEMBERID, M.FIRSTNAME, M.LASTNAME"
SQL = SQL & " FROM REQUESTS R, MEMBERS M"
SQL = SQL & " WHERE R.ACTIVE = 1 AND R.TOID = "& Session("MEMBERID") &" AND R.BYID = M.MEMBERID"
SQL = SQL & " GROUP BY R.REQUESTID, R.BYID, R.TOID, R.TYPE, R.DATEENTERED, M.MEMBERID, M.FIRSTNAME, M.LASTNAME"
SQL = SQL & " ORDER BY R.DATEENTERED DESC"

将结果作为
返回 朋友
伊迪
朋友
弗兰克
集团
乔治

但我需要它

朋友
伊迪
弗兰克
集团
乔治

5 个答案:

答案 0 :(得分:2)

尝试将其更改为不同的选择。我认为这是提供商特定的,但通常是

SQL = "SELECT DISTINCT R.REQUESTID, R.BYID, R.TOID, R.TYPE, R.DATEENTERED, M.MEMBERID, M.FIRSTNAME, M.LASTNAME"

SQL = "SELECT DISTINCT ROW R.REQUESTID, R.BYID, R.TOID, R.TYPE, R.DATEENTERED, M.MEMBERID, M.FIRSTNAME, M.LASTNAME"

会做的伎俩。

答案 1 :(得分:0)

分组依据会为您的分组列提供唯一值。

为什么要将好友行列出两次?

答案 2 :(得分:0)

如果您所关注的其中一位成员有多个申请,您将获得重复申请。

看看这个:

SELECT --select all columns required, can produce duplicates
    R.REQUESTID, R.BYID, R.TOID, R.TYPE, R.DATEENTERED, M.MEMBERID, M.FIRSTNAME, M.LASTNAME
    FROM REQUESTS            R
        INNER JOIN MEMBERS   M ON R.BYID = M.MEMBERID
    WHERE M.MEMBERID IN (SELECT --get distinct list of members to display
                             M.MEMBERID
                             FROM REQUESTS            R
                                 INNER JOIN MEMBERS   M ON R.BYID = M.MEMBERID
                             WHERE  R.ACTIVE = 1 AND R.TOID = ___MEMBERID__
                             GROUP BY M.MEMBERID
                        )
    ORDER BY R.DATEENTERED DESC

答案 3 :(得分:0)

SELECT和GROUP BY子句中有许多字段,从它们的名称来看,它们听起来像是MEMBERID等主键值或者可能非常独特的字段,例如DATEENTERED(最后一个可能包含时间)信息以及。)这些字段中的任何一个都可能阻止您的查询进行任何类型的分组。我会尝试删除其中的一些项目,直到您的分组开始生效。这样您就可以隔离出哪些字段存在问题。或者,保留一些字段,如名字和姓氏,然后添加以查看GROUP BY分崩离析的位置。

答案 4 :(得分:0)

我刚刚在查询的顶部添加了一个DISTINCT。如果我做对了,我猜这会解决。

SQL =“SELECT DISTINCT R.REQUESTID,R.BYID,R.TOID,R.TYPE,R.DATEENTERED,M.MEMBERID,M.FIRSTNAME,M.LASTNAME”

SQL = SQL& “请求R,成员M”

SQL = SQL& “在哪里R.ACTIVE = 1 AND R.TOID =”&会话(“MEMBERID”)&“AND R.BYID = M.MEMBERID”

SQL = SQL& “GROUP BY R.REQUESTID,R.BYID,R.TOID,R.TYPE,R.DATEENTERED,M.MEMBERID,M.FIRSTNAME,M.LASTNAME”

SQL = SQL& “由R.DATEENTERED DESC命令”

如果作品投票,试试这个!