0

私は、学生とスタッフの両方にログインするための学校用の Web ベースの時計を設計しています。

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

student_time_clock: student_id (foreign key to student), time_stamp, by_adult_id (foreign key to adult)

staff_time_clock: staff_id (foreign key to staff), time_stamp

私が与えられた要件の 1 つは、オブザーバーが次のような 1 つのビューでレコードを表示できることです。

+----------+------------+-------------------------+---------------------+
| In / Out | Time Stamp | Person Logged in or out | Logged in or out by |
+----------+------------+-------------------------+---------------------+

ユニオンを使用すると、最初の列以外はすべて実行できます。ただし、その最初の列を取得する方法がわかりません。ユニオンに使用しているクエリは次のとおりです。

SELECT stc.entry                             AS "Time Stamp", 
       Concat(s.lastname, ",", s.firstname) AS "Punched", 
       Concat(a.lastname, ",", a.firstname) AS "By" 
FROM   student_time_clock stc, 
       student s, 
       adult a 
WHERE  stc.student_id = s.id 
       AND stc.by_adult_id = a.id 
UNION 
SELECT atc.entry                             AS "at", 
       Concat(a.lastname, ",", a.firstname) AS "Staff", 
       Concat(a.lastname, ",", a.firstname) AS "By" 
FROM   staff_time_clock atc, 
       staff s, 
       adult a 
WHERE  atc.staff_id = s.id 
ORDER  BY "time stamp" DESC; 

次のような CASE を使用してみました。

CASE COUNT( entry ) % 2 WHEN 1 THEN "In" WHEN 0 THEN "Out"

その場合は、結果に1行しか表示されませんが。

助言がありますか?フロントエンドはPHPですが、これをデータベースのビューとして作成したいと思います

4

1 に答える 1