2016-07-12 9 views
0

が欠落したデータとSQLに参加左外側私は、MySQLデータベースで次のデータベーススキーマを持っている右の表に

ユーザー

  • ID

出席

  • ID
  • のuser_id
  • checked_on(日)

今与えられた日付範囲のために、私は、彼らがその日に存在したかどうかを言うのユーザーと別の列を一覧表示するレポートを構築したいですか否か。

私はレポートを取得することができるようにどのように上記のクエリを変更するには、次のクエリ

select * from users left outer join attendance on users.id = attendance.user_id where users.id in (11, 12); 

を使用して左外部結合使ってそれを成し遂げるしようとしていましたか?

+0

は、いくつかのサンプルデータと予想される結果を追加します。 – Blank

答えて

2

次のようなクエリを使用することができます。

select u.*, 
     IF(a.id IS NOT NULL, 'Present', 'Not Present') AS IsPresent 
from users u 
left outer join attendance a 
    on u.id = a.user_id and a.checked_on = ? 
where u.id in (11, 12); 
+0

これは、条件で1つの日付を指定すると機能します。しかし、 'a.checked_on> = '2016-07-01'やa.checked_on <= '2016-07-15'のような条件で日付の範囲を含めると、ユーザーがチェックインした行だけが表示されます。それは日付の範囲にも同様に動作させる方法はありますか? – Sudar

+0

@Sudarはい、 'ON'節に述語 'a.checked_on> =' 2016-07-01 'とa.checked_on <=' 2016-07-15 'を含めてください。**ではなく'どこに。 –

関連する問題