 |
รบกวนพี่ๆหน่อยครับ ทำยังไงให้เราดึงข้อมูลจากเงื่อนไข SQL นี้ได้ครับ |
|
 |
|
|
 |
 |
|
เริ่มต้น จัดการหาวันที่เกี่ยวข้องกันทั้งหมดก่อน Where clause
Code (SQL)
select * from table
where (period_str between '$date_str' and '$date_end')
or (period_end between '$date_str' and '$date_end')
or ('$date_str' between period_str and period_end)
or ('$date_end' between period_str and period_end)
นำ record ที่ได้ มาหา ระยะห่างของวัน
Code (SQL)
select
((period_str<='$date_str')*(DATEDIFF(period_end, '$date_str')+1), # first_period
(('$date_end'<=period_end)*(DATEDIFF('$date_end', period_str)+1), # last_period
(('$date_str'<=period_str and period_end<='$date_end')*(DATEDIFF(period_end,period_str)+1), # mid_period
baht
from table
where (period_str between '$date_str' and '$date_end')
or (period_end between '$date_str' and '$date_end')
or ('$date_str' between period_str and period_end)
or ('$date_end' between period_str and period_end)
นำมา รวมเป็น จำนวนเงิน
Code (SQL)
select
sum(
(
((period_str<='$date_str')*(DATEDIFF(period_end, '$date_str')+1)
(('$date_end'<=period_end)*(DATEDIFF('$date_end', period_str)+1)+
(('$date_str'<=period_str and period_end<='$date_end')*(DATEDIFF(period_end,period_str)+1)
) * baht
) as total
from table
where (period_str between '$date_str' and '$date_end')
or (period_end between '$date_str' and '$date_end')
or ('$date_str' between period_str and period_end)
or ('$date_end' between period_str and period_end)
ปล. ทดลองเอาเองนะครับ ไม่ได้ทดสอบ แค่อธิบายตามกระบวนการความคิดมาให้เห็น
และไม่ได้ คำนวณในส่วนของวันที่เดียวกันนะครับ ส่วนนี้ลองคิดเองก่อน ง่วงแล้วครับ(เลยลืม)
ปล. อีกทีแก้ไขให้แล้วนะครับ
|
ประวัติการแก้ไข 2015-07-20 03:25:43 2015-07-20 03:34:21
 |
 |
 |
 |
Date :
2015-07-20 03:17:50 |
By :
NewbiePHP |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ว๊าว จัดเต็ม ขอบคุณครับ เดี่ยวจะลองนำไปประยุกต์ดูนะครับ
ขอบคุณจริงๆครับ
|
 |
 |
 |
 |
Date :
2015-07-22 19:46:40 |
By :
ilikeit |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|