0

我需要一些帮助来设置我的查询。我只是试图通过将这两个表、氏族、用户连接在一起来访问同一“氏族”中的人数。每个用户都有一个列'clan',它与桌族的列'roomOwner'相同,然后我试图获取桌族的信息以及成员数量,所以它就像:房间,房间所有者,成员所以基本上我只有这个:

SELECT c.*, count(u.clan) AS members FROM clans c inner join users u WHERE c.roomOwner = u.clan ORDER BY members;

虽然它只显示一个氏族。请问有什么帮助吗?

4

3 回答 3

1

您的查询没有GROUP BY子句。我认为它只返回单条记录,对吗?LEFT JOIN这里需要,因为有可能 aclan没有成员。

SELECT  b.roomOwner, COUNT(a.clan) memberCount
FROM    clan b
        LEFT JOIN users a
            ON a.clan = b.roomOwner
GROUP BY b.roomOwner
ORDER BY memberCount 
于 2012-10-25T02:15:55.233 回答
0

也许这会有所帮助:选择 c.*, count(links.id) 作为部落 c 中的成员离开加入用户 u 在 c.roomOwner = u,clan group by u.clan order by members

于 2012-10-25T02:26:29.510 回答
0

您忘记了 GROUP BY。“氏族”表中有一些“id”列吗?按那个“id”分组

SELECT c.*, count(u.clan) AS members 
FROM clans c 
inner join users u ON c.roomOwner = u.clan
GROUP BY clans.id

如果您想查看所有氏族的信息,即使有 0 个用户,您也需要 LEFT JOIN 而不是 INNER JOIN。

于 2012-10-25T02:15:16.110 回答