2012-10-25 219 views
0

我需要一些帮助来设置我的查询。我只是试图通过将这两个表加入一起,部族,用户来访问同一'部族'中的人数。每个用户都有一列“部落”,这是一样的表家族的列“roomOwner”,然后我试图让表家族的信息与成员的数量以及因此这将是这样的:房间,roomOwner,成员 所以基本上我拥有的是这样的:内部连接两张表

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

它只显示一个部族。请帮忙吗?

回答

1

你的查询有没有GROUP BY条款。我认为这只是返回单个记录吗?这里需要LEFT JOIN,因为有可能clan没有成员。

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 
+1

感谢我的最终的查询是: '的选择b。 *,COUNT(a.clan)totalCount,SUM(c.xp)totalXp FROM部族b LEFT JOIN用户a ON a.clan = b.roomOwner LEFT JOIN skillsoverall c ON a.username LIKE c.playerName GROUP BY b.roomOwner ORDER BY'totalXp' DESC LIMIT 15' –

+0

高兴地听到:D –

+0

好吧,这是我的查询,但我试图为每一个$ i我的等级号码,但我所做的是有15个结果每一个结果: ''功能部族(){ \t $查询=请求mysql_query(“选择b *,COUNT(a.clan)TOTALCOUNT,SUM(c.xp)totalXp 从氏族b LEFT JOIN用户。 ON a.clan = b.roomOwner LEFT JOIN skillsoverall c ON a.username LIKE c.playerName GROUP BY b.r​​oomOwner ORDER BY'totalXp' DESC LIMIT 15“)or die(mysql_error()); ($行= mysql_fetch_array($查询)){ \t \t for($ i = 1; $ i <= $ rows; $ i ++){; \t \t \t echo $ i; \t \t} \t} }'我删除了一些代码,以便它适合此评论。 –

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 

而你需要LEFT JOIN存在的,而不是INNER如果你想看到所有部族的信息,甚至有0个用户加入群组。

0

或许这将帮助: 选择C *,COUNT(links.id)从氏族成员 Ç 左连接用户U ON c.roomOwner = U,氏族 组由u.clan 。为了通过会员