 |
เขียน sql ให้ 2 Record มาแสดงเป็น Record เดียว มีเวลาเข้า ออก อยู่ใน บรรทัดเดียวครับ |
|
 |
|
|
 |
 |
|
Code (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'
|
 |
 |
 |
 |
Date :
2020-08-13 17:24:08 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
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 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ลองดูครับ แก้ไข 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 ครับผม
|
 |
 |
 |
 |
Date :
2020-08-14 14:41:50 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|