สอบถามหน่อยครับ ผมมีตารางตามภาพที่ 1 เป็นตารางบันทึกเวลาเข้าทำงานครับ 1 คนจะมี 2 Record I กับ O คือ IN กับ OUT แต่ผมอยากได้ Repost แบบ ภาพที่ 2 ครับ เวลาที่ดึงข้อมูลออกมา อยากให้เหลือ Record เดียว เวลาเข้าออก อยู่ใน Record เดียวครับ ตามภาพ 2 ขอความช่วยเหลือหน่อยครับ ช่วยเขียน sql ให้ดูหน่อยครับ
select tb_in.user_id, tb_in.date , tb_in.chk_in, tb_ou.chk_out
from table_nm as tb_in
left join table_nm as tb_ou
on tb_in.user_id = tb_ou.user_id
and tb_in.date = tb_ou.date
and tb_ou.chk_type = 'o'
where tb_in.chk_type = 'i'
SELECT ข้อมูลที่ต้องการ,.......... From table
WHERE ... and ... and ... and ... Order by ... , ... , ...
===============================
ไม่ได้ยาก Query
แบบ 1 table ช่อน row
1.คือ เอา sql order by UserID while row1 จาก table1 fetch ออกมา ยกเว้น In and Out
2. เขียน SQL WHERE CHECKTPYE = o AND Date ='14-08-2020' AND UserID= 'Row1' Fetch row ออกมาว่า Out
3 เขียนแบบที่2 แค่เปลี่ยนเป็น I In
ออกแบบ Databases ผิดๆยากต่อการแสดงผล
จื่งต้องใช้ เทคนิก Coding ช่วย
==============================
ความเป็นจริงแยก table ออกเป็น3
1.table CheckinTimelive
2.table Checkin
3.table CheckOut
ออกแบบถูก เขียนระบบ Join กันง่ายๆไม่ต้อง Coding ให้ยาก
Date :
2020-08-14 10:11:17
By :
Hararock
No. 4
Guest
ลองดูครับ แก้ไข database ไม่ได้ก็มาเล่นที่ Query
SELECT USERID,date,CASE
WHEN CHECKTYPE="I" THEN CHECKIN
ELSE "" END AS [CHECKIN]
,CASE
WHEN CHECKTYPE="O" THEN CHECKOUT
ELSE "" END AS [CHECKOUT]
FROM TIMERECORD
GRUOP BY USERID,DATE
ลองปรับแก้ดูนะครับ เพราะไม่ได้สั่งรัน
จริงๆ มีลูกเล่นอีกเยอะครับ Query จะ ใช้ sub query หรือจะ with as (CTE) แยกแต่ละ CHECKTYPE
และมา join ทีหลังก้ได้ ง่ายสุดตามท่านอาจารย์ Chaidhanan ครับผม