【发布时间】:2013-09-07 01:45:29
【问题描述】:
我有一个表,我从中选择“项目经理”并提取有关他们的数据。
他们每个人都有许多他们管理的“客户”。
客户通过名称链接到他们的项目经理。
例如:John Smith 有 3 个客户。这些客户中的每一个都有自己的名字,称为“经理”。
这是表格的简单版本:
name | type | manager
--------------------------------------
John Smith | manager |
Client 1 | client | John Smith
Client 2 | client | John Smith
Client 3 | client | John Smith
John Carry | manager |
Client 4 | client | John Carry
Client 5 | client | John Carry
Client 6 | client | John Carry
我要返回以下数据:
约翰·史密斯 - 3 个客户
John Carry - 3 个客户
我使用这个查询返回数据:
select t.name,
count(t1.name) TotalClients
from yourtable t
inner join yourtable t1
on t.name = t1.manager
group by t.name;
http://sqlfiddle.com/#!2/d72a87/2
这在 phpMyAdmin 和小提琴中正常工作,但是当我使用 PHP 脚本(一个简单的查询和 $row['name'] 的回显)时,它选择了最后一个被计数的客户端(客户端 3)但是没有为 John Smith 返回正确的 Total Clients 值。
如何使 php 脚本返回与 sql 相同的结果?
PHP 脚本:
$sql = mysql_query("select t.name,
count(t1.name) TotalClients
from users t
inner join users t1
on t.name = t1.manager
group by t.name;");
while($row = mysql_fetch_assoc($sql)){
echo $row['name'];
echo $row['TotalClients'];
}
名称返回不正确的值; TotalClients 返回正确的值
【问题讨论】:
-
显示实际的 PHP 代码。您可能正在获取/显示问题,并且查询不会有问题。
-
from users t inner join yourtable t1与from yourtable t inner join yourtable t1略有不同不是吗? -
经理和客户是否保存在同一张表中?
-
@u_mulder 是的。只是忘记复制了
-
@LiamAllan 是的,如上所示..