0

「プロジェクトマネージャー」を選択してそれらに関するデータを取得するテーブルがあります。

それぞれが管理する多数の「クライアント」を持っています。

クライアントは、名前でプロジェクト マネージャーにリンクされます。

例: 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 が正しい値を返す

4

1 に答える 1