私は、カレンダー、従業員、仕事という3つのテーブルを持っています。 従業員は通常、週にタスクを完了し、週末には仕事をしません。私が達成したいことは、テーブルに参加しているので、従業員がいなくても1年で毎日見ることができます。ここでテーブルを結合してヌル値の日付を表示するにはどうすればよいですか?
は私の作品sqlです:
SELECT c.date, t.task, e.name
FROM calendar c
LEFT JOIN tasks t ON (c.date = t.date)
INNER JOIN employees e ON (t.emp_id = e.id)
WHERE c.date >= "2016-01-01" AND c.date <= "2016-01-07";
結果は次のようになります。
Date Task Name
...
2016-01-05 Driving John
2016-01-05 Cooking Rob
2016-01-06 Installing Jane
2016-01-07 null null
私の問題は、私はWHERE
句(WHERE e.name in("John", "Rob", "Jane")
)に従業員を追加するときにということ、です、最後の行(2016-01-07 null null
)が消えます。
結果に従業員やタスクのない日付を保存するために変更する必要はありますか?最終報告のためにこれらの日付が必要です。
なぜこの奇妙な日付ですか? ( '... AND c.date <=" 20016-01-07 "') – jarlh
私はこのクエリが上記の結果を返すとは思わない。 – Strawberry
コメントをいただきありがとうございます。 – StefanK