LEFT JOIN MySQL和PHP
问题描述:
我想为我的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";
?>
答
查询应该是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"
答
本集团应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的任何数据,但我保留它,如果你以后会用它
答
我发现解决方案,但现在我想添加一个特定的用户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");
如果查询成功,你会得到一个号码。由于你没有得到任何东西,你的查询失败了,返回boolean false,并且由于你完全没有错误处理,并且简单地假设什么都不会出错,所以你将boolean false作为一个字符串,它是一个零长度/不可见字符串。 –
正如我写的,我有两个用户与项目具有相同的座右铭。所以它应该返回两个? –
不要将不推荐使用的mysql_接口函数用于新开发。使用mysqli或PDO。这段代码将它的象征性的小手指放在它的比喻性的嘴角上,说Dr.Evil的风格“我只是假设它会全部按计划进行,什么?”如果查询遇到错误,MySQL将返回错误消息。这段代码似乎完全忽略了MySQL可能返回错误的想法。 – spencer7593