私は従業員のテーブルを持っています。各従業員には社員IDがあります。一部の従業員には、別の従業員のIDにリンクする管理者フィールドがあります。従業員は10名あり、うち2名は監督者であり、それぞれが4名を監督しています。私はすべての従業員のリストと彼らが監督する他の従業員の数を取得しようとしています。これまでのところ、私は監督者と彼らが監督する数字を手に入れることしかできないようです。これは私のクエリです:私はRIGHT JOIN
からJOIN
を変えてみましたすべての従業員とその人数をmysqlで監視します
SELECT s.employee_name, COUNT(*)
FROM employee e
join employee s on e.supervisor_id= s.employee_id
group by s.
order by s.employee_name;
、それは今、彼らは監督4人を有するものとして示さ2つのスーパーバイザと私にすべての従業員10名が表示されますが、それはよう監督する誰もが持っていない他のすべてを示してい0の代わりに1を持っています。私はそれが私が行方不明の単純なものだと確信しています。
サンプルデータ:私たちは実際のテーブルとそれに参加するのと同じよう
employee_name, employee_name, supervisor_id,
'10111', 'Sydnee K. Stevens' NULL
'10870', 'Colton C. Rocha', '10111'
'11425', 'Astra V. Sharp','10111'
'12973', 'Melanie X. Rojas','10111'
'14451', 'Bethany Roman','10111'
'14597', 'Lydia Edwards', NULL
'16153', 'Selma Q. Conley', '14597'
'17730', 'Kristen B. Malone', '14597'
'17762', 'Barrett B. Bauer', '14597'
'18628', 'Shana Z. Flowers','14597'
サンプルデータと予想される結果をご確認ください。 PS - 'some'にスーパーバイザフィールドがありますか? – user3741598
する必要があります "一部の従業員はsupervisor_id" –
"を持っていますが、他のすべての人は0ではなく1を持つと監督する人はいません - これは' COUNT(*) 'のためです。試してみてください。(COUNT(e.supervisor_id)) –