「プロジェクトマネージャー」を選択してそれらに関するデータを取得するテーブルがあります。
それぞれが管理する多数の「クライアント」を持っています。
クライアントは、名前でプロジェクト マネージャーにリンクされます。
例: 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 人のクライアント
ジョン・キャリー - 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 の総顧客数。
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 が正しい値を返す