tblteacher と tblattendance の 2 つのテーブルがあり、tshortname フィールドが共通しています。tblattendance の特定の日付について、tblattendance にも tshortname がある場合は、tblteacher からの tshortname とステータスを「yes」として表示したいと思います。それ以外の場合、ステータスは「no」にする必要があります。
select distinct(tblteacher.teachername),tblteacher.tshortname,
if(strcmp(tblteacher.tshortname,tblattendance.tshortname) and tblattendance.attdate='2013-07-01','no','yes') as status
from tblteacher,tblclass,tblattendance
上記のクエリを実行したときに表示されるデータは次のとおりです
date-'2013-07-01' に表示されているデータは、一部の教師については正しいものです。問題がどこにあるのかわかりません。この問題を解決するのを手伝ってください
アップデート:
select distinct(tblteacher.tshortname),if (tblteacher.tshortname not in(SELECT
distinct(t.tshortname) from tblteacher t left join tblattendance a on t.tshortname=a.tshortname
where a.attdate='2013-07-03'),'no','yes') as status from tblteacher;
現在、出席テーブルの日付に従って、常に42行と正しいステータスを取得しています