-1

私は2つの単純なテーブルを持っています:

  • 従業員
  • 従業員レポート

従業員は、1 日 1 レポートを提出することが期待されています。

今、ここに必要性があります: 従業員によって提出されたすべてのレポートを一目で見ることができます。レポートのない従業員は空白のレポートフィールドを表示するだけです..基本的に、これは、レポートがあるかどうかに関係なく、すべての従業員がリストされることを意味します

私のGUIでの出力例:

2012-01-03
Employee 1 : I ate a burger
Employee 2 : I ate french frice
Employee 3 : 
Employee 4 : i ate hotdog

これは、複数の SQL クエリで簡単に実行できます。1 つはすべての従業員を特定の順序で一覧表示するためのもので、もう 1 つは従業員の各レポートを照会するためのものです。

もちろん、それは効率的ではありません..

employee テーブルの employee_reports の LEFT JOIN は簡単に作成できますが、

問題: 特定のレポートの日付をターゲットにする必要があるため、mYSQL はレポートのある従業員のみを出力します。提出しなかった従業員はリストされません。

ここに私の基本的なSQLのサンプルがあります

SELECT
employees.eid,
employees.fname,
employees.lname,
employee_reports.report
FROM
employees
LEFT JOIN employee_reports ON employees.eid = employee_reports.eid
WHERE 
report_date = '2013-01-03'

これを 1 回のクエリで実行できますか?

4

1 に答える 1

2

どこでも空の値をチェックできる必要があるので、それを作成してください

SELECT
employees.eid,
employees.fname,
employees.lname,
employee_reports.report
FROM
employees
LEFT JOIN employee_reports ON employees.eid = employee_reports.eid
WHERE 
report_date = '2013-01-03'
OR report_date IS NULL
于 2013-01-07T13:12:48.573 に答える