ถามเรื่องการดึงวันที่ลาเก่า+ วันที่ลาใหม่ หน่อยครับผม
WHERE codition ORDER BY field DESC LIMIT 1, 1
Date :
2016-06-23 15:11:15
By :
fossil31
Code (SQL)
select u.id,
count( l.leave_date_start) as `ครั้งที่ลา`
sum(coalesce(datediff(l.leave_date_end, l.leave_date_start)+1, 0)) as `วันที่ลา`
from table_user u
left join table_leave l on l.user_id = u.id
แก้ตัวแปรเอาเองนะครับ เนื่องจากเป็นภาพ ผมก๊อปไม่ได้ เลยเขียนจากความจำ(ที่แย่ๆ 5555)
ปล. ไม่ได้เช็คเสาร์อาทิตย์ หรือวันหยุด
พวกวันหยุดราชการ ต้องมีตารางวันหยุด
ส่วนเสาร์อาทิตย์ ใช้ function ได้
if( week(datestart)>week(dateend), 2, 0) as `บวกเสาร์อาทิตย์`
ประวัติการแก้ไข 2016-06-23 16:23:43
Date :
2016-06-23 16:15:44
By :
Chaidhanan
เบื้องต้นแนะนำ เขียน หลาย query ครับ
ทำทีละเงื่อนไขแล้วใช้ การ coding พื้นฐาน เอาข้อมูลแต่ละ query มา บวกลบกันครับ while ค่ามาเก็บแล้ว บวกลบกัน จนได้คำตอบ
เพราะ กรณีเขียนแบบ 1 คิวรี่ อาจจะค่อนข้างซับซ้อน สำหรับมือใหม่
Date :
2016-06-23 19:45:45
By :
progamer2000
เขียน qurey ปกติแหละ สร้างตัวแประ มา sum 1 ตัว จบ
Code (PHP)
$sumLeave = 0;
$lastLeave=0 ;
$sumLeaveArr
while($rs = ......){
ครั้งที่ $i+=1
ลาครั้งก่อน $sumLeave
ลาครั้งนี้ $rs['sum_date'];
$sumLeave += $rs['sum_date'];
จำนวนรวม $sumLeave;
คงเหลือ $sumLeave-30
$lastLeave[$rs['type_leave']] = $rs['sum_date'];
$sumLeaveArr[$rs['type_leave']] += $rs['sum_date'];
}
จบไหมครับ
อันนี้ ตาราง ล่าง
Code (PHP)
foreach($sumLeaveArr as $k=>$v){
ลาอะไร $k
ครั้งก่อน $sumLeaveArr[$k] -$lastLeave[$k]
รวม $sumLeaveArr[$k]
}
ถ้าเขียนอะไรผิดก็ลองไปแก้เอานะครับแต่จะประมานนี้
ประวัติการแก้ไข 2016-06-24 08:57:59
Date :
2016-06-24 08:46:24
By :
gaowteen
Load balance : Server 03