私は4つのテーブルを持っています。
tbl_person:
- person_id
- unique_id_number
tbl_plan:
- plan_id
- plan_name
tbl_person_plan:
- id
- person_id
- plan_id
- is_done
tbl_monitor_level:
- id
- unique_id_number
- sugar_level
- date_submitted
ユーザーは tbl_monitor_level に毎日データを入力します。今日のデータが入力されていないすべての unique_id_number を取得したいだけです。
私はこれを使います
select distinct tml.unique_id_number, count(tml.sugar_level) from
tbl_person tp
right join
tbl_monitor_level tml on
tml.unique_id_number = tp.unique_id_number
inner join tbl_person_plan tpp on
tpp.person_id = tp.person_id
where tml.date_submitted = '2013-01-08'
group by tml.unique_id_number
ただし、date_submitted = 2003-01-08 の unique_id_number のみを取得します。代わりにこれを取得したい
unique_id_number | count
-------------------------
G12345A | 1
G23456B | 0
しかし、このままでは他に手が届きませんunique_id_number (G23456B)
。これらはすべてunique_id_numbers
他のテーブルに存在します。
サンプルデータ
tbl_person
- person_id - 1
- unique_id_number - G12345A
- person_id - 2
- unique_id_number - G23456B
tbl_plan
- plan_id - 1
- plan_name - Plan A
tbl_person_plan
- id - 1
- person_id - 1
- plan_id - 1
- is_done - 0
- id - 2
- person_id - 2
- plan_id - 1
- is_done - 0
tbl_monitor_level
- id - 1
- unique_id_number - G12345A
- sugar_level - 100
- date_submitted - 2013-01-08
- id - 2
- unique_id_number - G12345B
- sugar_level - 200
- date_submitted - 2013-01-07
上記のデータが結果のはずです。しかし、私は得ているだけです
unique_id_number | count
-------------------------
G12345A | 1