รหัสพนักงาน ชื่อพนักงาน ห้อง สถานะ
1036 นายA A IN
1037 นายB A IN
1037 นายB A OUT
1039 นายZ A IN
1036 นายA A OUT
1036 นายA A IN
เราจะใช้คำสั่ง SQL ยังไง ให้ SELECT ข้อมูล เฉพาะ คนที่อยู่ในห้อง ตอนนี้น่ะค่ะ
ผลที่ได้ต้องออกมาแค่นาย A กับ นาย Z เพราะว่านาย B ออกจากห้องไปแล้ว แต่นาย A ถึงออกไปแล้วก็จริง แต่ก็เข้ามาใหม่ อะไรประมาณนี้น่ะค่ะ
พอดีเราลอง SELECT ดูแล้ว มันออกผลแค่ IN หรือไม่ก็ OUT อย่างใดอย่างหนึ่ง ก็เลยกำลังคิดอยู่ว่า สร้างเงื่อนไขยังไงให้มันรู้ว่า ใครอยู่ในห้องบ้าง ขอความช่วยเหลือนิดนึงนะคะ ขอบคุณมากค่ะ^^
ควรจะเอา statement ที่ทำมาแสดงด้วยนะครับ
แต่ดูจากความต้องการแล้ว
ต้องมี field เวลา เข้ามาเกี่ยวข้องด้วยนะครับ โดย field เวลา บอกสถนะครั้งสุดท้ายครับ
ก็น่าจะเขียนแบบนี้ได้นะครับ
Code (SQL)
select a.รหัสพนักงาน, a.ชื่อพนักงาน, a.ห้อง, a.สถานะ, a.เวลา
from ( select รหัสพนักงาน, max(เวลา) mtime from tablename where สถานะ='IN' group by รหัสพนักงาน) as b
left join tablename as a on a.รหัสพนักงาน = b.รหัสพนักงาน and a.เวลา=b.mtime
Select a.IDEm,a.NameH,a.StatusH,a.timeH FROM (Select IDEm, Max(timeH) mtime from history_cardb where statusH = 'IN' group by IDEm) as b left join history_cardb as a on a.IDEm = b.IDEm and a.timeH = b.mtime
select a.u_id, a.u_name, a.room, a.status, a.Etime
from ( select u_id, max(Etime) mtime from bell where status='IN' group by u_id) as b
left join bell as a on a.u_id = b.u_id and a.Etime=b.mtime
-ถ้าเป็น IN ก็ให้มันเข้าไปบันทึกข้อมูลในตารางนี้ ว่ามีพนักงานชื่ออะไร ห้องอะไร อยู่ในห้องนี้
-ถ้าเป็น OUT ก็ให้มันเข้าไปลบข้อมูลของพนักงานคนนั้นออก ตามห้องที่เข้าอยู่
แล้วพอดึงรายงานก็ให้มันดึงจากตารางใหม่นี้ มันก็จะเหลือเฉพาะคนที่ยังอยู่(คนที่ Out ลบทิ้งหมด)
ติ๊งต๊องม่ะคะ อิอิ^^ แต่ถ้าเอาแค่ผลก็ได้ตามที่ User ต้องการนะ