2016-09-28 177 views
0

我想为我的adminpanel获取一些统计信息。 我有两个名为users和cms_prosjekt的表。我想要统计与用户具有相同属性的多少个项目 。LEFT JOIN MySQL和PHP

每个用户都有一个连接到项目的座右铭。例如:座右铭是精神和项目代码是精神。它不会返回任何东西。我有两个用户与一个项目中的代码相同的座右铭。

<?php 

    $result = mysql_query("SELECT 
     users.id, 

     COUNT(users.motto) AS count 
    FROM 
     users 
     LEFT JOIN cms_prosjekt ON 
     users.motto=cms_prosjekt.code 
    GROUP BY 
     users.motto"); 
$num_rows = mysql_num_rows($result); 

    echo "$num_rows"; 

    ?> 
+2

如果查询成功,你会得到一个号码。由于你没有得到任何东西,你的查询失败了,返回boolean false,并且由于你完全没有错误处理,并且简单地假设什么都不会出错,所以你将boolean false作为一个字符串,它是一个零长度/不可见字符串。 –

+0

正如我写的,我有两个用户与项目具有相同的座右铭。所以它应该返回两个? –

+0

不要将不推荐使用的mysql_接口函数用于新开发。使用mysqli或PDO。这段代码将它的象征性的小手指放在它的比喻性的嘴角上,说Dr.Evil的风格“我只是假设它会全部按计划进行,什么?”如果查询遇到错误,MySQL将返回错误消息。这段代码似乎完全忽略了MySQL可能返回错误的想法。 – spencer7593

回答

1

查询应该是COUNT(*)和组由user.motto

"SELECT 
    user.motto 
    , COUNT(*) AS count 
FROM users 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto" 
0

本集团应users.id不users.motto:

<?php 
$result = mysql_query("SELECT users.id, COUNT(users.motto) AS count FROM users LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code GROUP BY (users.id)"); 
$num_rows = mysql_num_rows($result); 
echo $num_rows; 
?> 

注意:我看不到任何值的左连接,你不需要从cms_prosjek的任何数据,但我保留它,如果你以后会用它

0

我发现解决方案,但现在我想添加一个特定的用户ID到查询。由于每个管理员都有自己的归属区域,因此我想列出连接到特定管理员的所有用户。每个管理员都在为用户创建项目。

我尝试这样做:

$result = mysql_query("SELECT users.motto, COUNT(*) AS count FROM users 
WHERE id = '".$_SESSION['user']['id']."' 
LEFT JOIN cms_prosjekt ON users.motto=cms_prosjekt.code 
GROUP BY users.motto");