-1

ここに画像の説明を入力

と の 2 つのテーブルがtblteacherありtblattendanceます。特定の日に出席をマークした教師を見つけたいです。たとえば、2013 年 7 月 2 日。教師の名前がテーブルに存在する場合は、tblteacher ステータスとして [はい] が表示され、そうでない場合は [いいえ] が表示されます。

SELECT distinct tblteacher.tshortname
    FROM tblteacher
    LEFT JOIN tblattendance
    ON tblteacher.tshortname = tblattendance.tshortname
    WHERE tblattendance.attdate = '2013-07-02';

特定の日付に共通データを取得しました。しかし、ステータスを修正する方法...

4

2 に答える 2

0

このようなことを意味しますか?

SELECT IF(t.tshortname IS NOT NULL,'yes','no')
  FROM  tblattendance AS a
  LEFT JOIN tblteacher AS t
  USING (tshortname)
  WHERE a.attdate = 20130702;
于 2013-09-05T08:52:48.737 に答える
0

RIGHT JOIN を使用する必要があります。mysql ドキュメント リファレンスで説明されているように、テーブル A と B を結合すると、テーブル B に一致する行がない場合でも、テーブル A から行が返されます。

SELECT t.shortname, CASE WHEN a.tshortname IS NULL THEN 'no' ELSE 'yes' END as marked_attendance
  FROM  tblteacher t 
  RIGHT JOIN tblattendance a
  USING (tshortname)
  WHERE a.attdate = '2013-07-02';
于 2013-09-05T09:13:29.890 に答える