ここでスティックの端が間違っている可能性がありますが、外側の結合により、(たとえば)左側のテーブルにあるすべてのレコードと、右側のテーブルからの一致する結果、およびnullが得られるはずだと思いました。一致するものがなかったところ。
クエリする必要のあるテーブルが3つあります。人と詳細は直接1:1の関係にあります。3番目のテーブルは時間です。これは、1人あたり、プロジェクトごとに、週単位で作業した時間を保存します。私は一人一人が下に置いた週数のカウントが必要です。
以下は、各ユーザーが1週間を超えて時間を置いている限り、時間を置いた週数を示しています。
SELECT name, detail.clock, COUNT(DISTINCT(week))
FROM person, detail,
WHERE person.ref = detail.person
AND detail.clock = time.clock
WHERE time.week >= "2010-07-01"
GROUP BY detail.clock
つまり、これは時間を入力した80/100人を表示します。
でもまだ時間を割いていない20人に会う必要があるので、次のアウタージョインを試してみました
SELECT name, detail.clock, COUNT(DISTINCT(week))
FROM person LEFT OUTER JOIN detail ON person.ref = detail.person
LEFT OUTER JOIN time ON detail.clock = time.clock
WHERE time.week >= "2010-07-01"
GROUP BY detail.clock
ただし、これにより、最初のクエリとまったく同じ結果が得られます。
編集:私はちょうど問題の一部を発見しました。疑似コードの元のバージョンでは、日付によるちらつきはありませんでした。日付フィルターを削除すると、クエリが期待どおりに動作することがわかりました。ただし、遅すぎて役に立たず、日付が重要です。