Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > อยากทราบวิธีการ select ในเงื่อนไขไตรมาสครับ โดยไตรมาสเป็นแบบงบประมาณราชการ ครับ (กำลังเร่งพัฒนาครับ อีกสองวันน่าจะทำได้)



 

อยากทราบวิธีการ select ในเงื่อนไขไตรมาสครับ โดยไตรมาสเป็นแบบงบประมาณราชการ ครับ (กำลังเร่งพัฒนาครับ อีกสองวันน่าจะทำได้)

 



Topic : 110523



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์




คือว่านะครับ ตอนนี้ผมต้องออกรายงานครับ ซึ่งผู้ใช้สามารถเลือกออกรายงาน เป็นแบบไตรมาสได้ครับ


โดยไตรมาส 1 เริ่มที่ ตุลาคม ถึง ธันวาคม
โดยไตรมาส 2 เริ่มที่ มกราคม ถึง มีนาคม
โดยไตรมาส 3 เริ่มที่ เมษายน ถึง มิถุนายน
โดยไตรมาส 4 เริ่มที่ กรกฏาคม ถึง กันยายน


เราจะ SELECT เงื่อนไขจากไตรมาสออกมายังไง เพื่อใช้คำนวนดีครับ

ตอนแรกผมคืดว่า สร้างตารางมาเก็บข้อมูลไตรมาส ไว้ แล้วให้ผู้ใช้เลือกไตรมาส

แต่ผมก็ไม่เข้าใจว่า จะเอามาเชื่อมโยงกันยังไงดีครับ เพราะไม่ได้เก็บคีย์ร่วมอะครับ

จะเอาไปตรวจเงื่อนไข ใน ตารางค่าใช้จ่าย ก็ ดูงงๆ จะดึง date มาเช็คก็งงอะครับ

อันนี้เป็นภาพหน้าจอโปรแกรมครับ ผมให้ Value เก็บข้อมูล ID ไตรมาสครับ

ตอนแรกเก็บไตรมาสทั้งประโยคเลย แต่มันดูแปลกๆอะครับ


ขออธิบายความสัมพันธ์ตารางหน่อยนะครับ

ตาราง tbbudgetcategory เก็บค่าหมวดหมู่ กับจำนวนเงินครับ

ตาราง tbclearbill เก็บค่าใช้จ่ายครับ

ตาราง tbbudgetquarter เก็บไตรมาสครับ


ตาราง tbbudgetcategory เชื่อมกับ tbclearbill ด้วย BudgetyearID กับ BudgettypeID ครับ

ตาราง tbbudgetquarter อยู่โดดครับ

ที่ต้องการคือ เอาจำนวนเงิน tbbudgetcategory มาลบกับค่าใช้จ่ายใน ตาราง tbclearbill ครับ


ผมทำเงื่อนไขแบบหมวดได้แล้ว ตอนนี้เหลืิอเงื่อนไขแบบไตรมาสครับ



ปล.ฝากถึงแอดมินเว็บหน่อยนะครับ ถ้าเผลอเข้ามานะครับ
คือว่า อยากให้มี Emoticon ที่สื่ออารามณ์แบบ "ร้องไห้เสียใจ" ,"อารมณ์รู้สึกงงงวย",
หรืออื่นๆอะครับ คื่อ Emoticon ที่มีสื่อถึงอารมณ์ไม่ลึกพออะครับ
ปล2.(อย่าแบนผมนะครับ )


หน้าจอโปรแกรม

ตารางไตรมาส

ตารางงบประมาณ

ตารางค่าใช้จ่าย

หน้าตารายงาน



Tag : PHP, HTML/CSS, Ajax, jQuery, iReport, Crystal Report









ประวัติการแก้ไข
2014-08-09 18:03:18
2014-08-09 18:04:16
2014-08-09 18:05:17
2014-08-09 18:08:46
2014-08-09 18:12:25
2014-08-09 18:12:46
2014-08-09 18:15:53
2014-08-09 18:55:24
2014-08-09 18:56:08
2014-08-10 13:47:19
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-08-09 18:01:38 By : nest12345 View : 3205 Reply : 44
 

 

No. 1



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
select c.BudgettypeID, sum(b.Clearbillpay), sum(อื่นๆ 1), sum(อื่นๆ 2) 
from tbbudgetquarter q
left join tbclearbill b on b.Clearbilldate>=q.Budgetquarterstart and b.Clearbilldate<=q.Budgetquarterend
left join tbbudgetcategory c on c.(ตรงนี้ไม่รู้จะจอยยังไงไม่เห็น ชื่อ field ที่เกีียวข้องกัน 55555)
group by c.BudgettypeID, q.Budgetquarterstart
having q.Budgetquaterstart=ไตรมาสที่ต้องการ


คงได้ประโยชน์บ้างนะครับ








ประวัติการแก้ไข
2014-08-09 18:17:44
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 18:17:30 By : Chaidhanan
 


 

No. 2



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 18:17:30
รายละเอียดของการตอบ ::
งง ครับ 555+ แต่จะลองเอาไป select ให้ได้ไตรมาสที่ต้องการนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 18:26:31 By : nest12345
 

 

No. 3



โพสกระทู้ ( 455 )
บทความ ( 0 )



สถานะออฟไลน์


ตาราง ดูแล้ว ผมงง อิอิ ถ้ายังไง Add Line มาละกันนะครับถ้ายังทำไม่ได้ YamQ ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 18:33:02 By : yamcrocodile
 


 

No. 4



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : yamcrocodile เมื่อวันที่ 2014-08-09 18:33:02
รายละเอียดของการตอบ ::
ถ้า ทำไม่ได้จริงๆจะแอดไปถามนะครับ

ขอบคุณจริงๆนะครับ T^T

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 18:48:43 By : nest12345
 


 

No. 5



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
select c.BudgettypeID, q.BudgetquarterID quarter, c.Budgetcategoryamount amt, sum(b.Clearbillpay) pay 
from tbbudgetquarter q
left join tbclearbill b on b.Clearbilldate>=q.Budgetquarterstart and b.Clearbilldate<=q.Budgetquarterend
left join tbbudgetcategory c on c.BudgettypeID=b.BudgettypeID
group by c.BudgettypeID, q.BudgetquarterID


ลองดูอีกทีครับ คิวรี่แล้วดูผลของมันครับ คงจะได้ไอเดียเอาไปทำต่อนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 19:16:19 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 19:16:19
รายละเอียดของการตอบ ::
พี่ครับ ค่า c q b คือค่าอะไรหรอครับ



ฐานข้อมูล


เริ่มใก้ลเคียงละครับ ขอบคุณนะครับ นะครับ กำลังคิดว่า จะเอา ไตรมาสมาแสดงยัง


ประวัติการแก้ไข
2014-08-09 19:26:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 19:24:16 By : nest12345
 


 

No. 7



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


คือว่าถ้าเราไม่ใช้ตาราง ไตรมาส


Select สองตารางแล้วใช้ ฟังก์ชั่นหรือเงื่อนไข ตวรจว่าเป็นไตรมาสอะไรจะได้ไหมครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 19:34:24 By : nest12345
 


 

No. 8



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
from tbbudgetquarter q
left join tbclearbill b 
left join tbbudgetcategory c 


เป็น alias (ชื่อเล่น เอาไว้ใช้สำหรับชื่อ table ยาวครับ)
เท่ากับ
Code (SQL)
from tbbudgetquarter AS q
left join tbclearbill AS b 
left join tbbudgetcategory AS c 



ประวัติการแก้ไข
2014-08-09 21:10:02
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 21:09:05 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ลองใส่ ค่าไตรมาสให้มันอยู่ในช่วงข้อมูล ของ clearbill ด้วยครับ มันจะได้แสดงสมจริงหน่อย

ปล. ไม่ต้องเอามาโชว์นะครบั เดียวจะเอาความลับราชการมาเปิดเผย 5555


ประวัติการแก้ไข
2014-08-09 21:15:41
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 21:15:00 By : Chaidhanan
 


 

No. 10



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : nest12345 เมื่อวันที่ 2014-08-09 19:34:24
รายละเอียดของการตอบ ::
ได้ครับ แต่ มี 3 ตารางเข้าใจง่าย สร้างข้อมูลก็ง่ายนะครับ ถ้าใช้ สูตร โค๊ตก็จะยาวอีรุงตุงนังไปอีก

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 21:19:25 By : Chaidhanan
 


 

No. 11



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 21:19:25
รายละเอียดของการตอบ ::
อ่อ

แบบนี้ก็คือ ต้อง select ให้ตามที่ต้องการสินะ

ขอบคุณนะครับ

กำลังพยายามสุดความสามารถเลยคับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 21:24:35 By : nest12345
 


 

No. 12



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 9 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 21:15:00
รายละเอียดของการตอบ ::
อะคับ กำลังกลัวข้อมูลรั่วไหลอยู่เลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 21:25:48 By : nest12345
 


 

No. 13



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


Code (SQL)
select tbbudgetcategory.BudgettypeID, tbbudgetquarter.BudgetquarterID Quarter, tbbudgetcategory.Budgetcategoryamount amt, sum(tbclearbill.Clearbillpay) pay 
from tbbudgetquarter
left join tbclearbill on tbclearbill.Clearbilldate>= tbbudgetquarter.Budgetquarterstart and tbclearbill.Clearbilldate<=tbbudgetquarter.Budgetquarterend
left join tbbudgetcategory  on tbbudgetcategory.BudgettypeID=tbclearbill.BudgettypeID
group by tbbudgetcategory.BudgettypeID, tbbudgetquarter.BudgetquarterID




จากโค้ดนี้ รันผ่านแล้วนะครับ แต่ว่า


เรา select โดย ดูเฉพาะค่าเดือน กับ วัน ได้ไหมครับ

คือปี มันเปลี่ยนตลอดอะครับ


ประวัติการแก้ไข
2014-08-09 22:16:59
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:16:41 By : nest12345
 


 

No. 14



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ถ้าไม่ใช้ปีคุมมันจะเอาปีเก่าช่วงเดือนเดียวกันมาด้วยนะสิครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:21:16 By : Chaidhanan
 


 

No. 15



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 22:21:16
รายละเอียดของการตอบ ::
แล้วเราควรทำยังไงดีครับ



คือ ตารางไตรมาส ผมก่ะให้ไม่มีการบันทึกใหม่ ผมว่าจะใช้ เรียกเป็นเงื่อนไข เดือน กับ วัน อะครับ

แล้วอีกอย่าง งบประมาณของระบบผมมันทับปีกันอะครับ

อย่าง งบปี 2556

เริ่มไตรมาส 1 ที่ ตุลา 55 - ธันวา 55
เริ่มไตรมาส 2 ที่ มกรา 56 - มีนา 56
เริ่มไตรมาส 3 ที่ เมษา 56 - มิถุนา 56
เริ่มไตรมาส 4 ที่ กรกฏาคม 56 - กันยายน 56


แบบนี้อะครับ T^T รู้สึกช๊อกเบาๆครับ เกือบจะผ่านตรงนี้แล้ว อิอิ











ประวัติการแก้ไข
2014-08-09 22:27:54
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:27:11 By : nest12345
 


 

No. 16



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ไม่จำเปนต้องกังวลกับปี เหลือมกันครับ เราใช้ ปีเดือนวัน ในการเสริช์ อยู่แล้วครับ
ที่ต้องกังวล ถ้าไม่ได้ใช้ปีคุม ปี 2555-10-11 กับ 2556-10-12 มันจะรวมกันเป็นอันเดียวกันนะสิครับ
ถ้าใช้แค่เดือนกับวัน คิวรี่

เปลี่ยน ข้อมูลปีล่ะครั้งน่ะครับ กลัวงานเยอะเหรอครับ 555555 ถึงจะทำหนเดียว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:36:30 By : Chaidhanan
 


 

No. 17



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ถ้าเรียกเป็นเงือนไข ก็ไม่ใช้ ก็ได้ครับ tbbudgetquarter

select c.BudgettypeID, q.quarter, c.Budgetcategoryamount amt, sum(b.Clearbillpay) pay
from (select 1 as quarter, '2012-10-01' qstart, '2012-12-31' qend) q
left join tbclearbill b on b.Clearbilldate between q.start and q.qend
left join tbbudgetcategory c on c.BudgettypeID=b.BudgettypeID
group by c.BudgettypeID, q.quarter


ก็ใช้ตรงสีแดงคุมวันเวลา
หรืออาจจะเพิ่ม ไตรมาสตามชอบก็ได้อีกเหมือนกัน
from (
select 1 as quarter, '2012-10-01' qstart, '2012-12-31' qend
union all
select 2, '2013-01-01', '2013-03-31'
union all
select 3, '2013-04-01', '2013-06-30'
union all
select 4, '2013-07-01', '2013-09-30'
) q



ประวัติการแก้ไข
2014-08-09 22:46:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:45:23 By : Chaidhanan
 


 

No. 18



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 22:36:30
รายละเอียดของการตอบ ::
อ่อ เข้าใจละครับ


ปีหนึ่งก็ไปแก้ตาราง ไตรมาสครั้งหนึ่งสินะครับ

อิอิ ทำๆไปก่อนก็ดอเคครับ ขอบคุณมากนะครับ ^_^



ตอบความคิดเห็นที่ : 17 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 22:45:23
รายละเอียดของการตอบ ::
ขอบคุณมากครับ จะลองไปประยุกต์ใช้ครับ

ต้องคว้า A วิชาโปรเจคให้ได้



ประวัติการแก้ไข
2014-08-09 22:49:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 22:46:36 By : nest12345
 


 

No. 19



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ยังไงก็เอา A ที่ได้แบ่งมาให้ผมบ้างนะ 55555
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-09 23:43:41 By : Chaidhanan
 


 

No. 20



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


Code
ขอบคุณมากครับ จะลองไปประยุกต์ใช้ครับ ต้องคว้า A วิชาโปรเจคให้ได้



เห็นหน้าคุณแล้วผมรู้สึกคุ้นคุ้นครับ (เอ็นดู)

คำว่าไตรมาส (Quarter) หรือ 1 ปี \ 3 เดือนนั่นแหละครับ ก็จะได้ Q1, Q2, Q3, Q4
แต่คุณต้องการแบบนี้ (ตามปฏิทินราชการไทย)

Q1 = Q4
Q2 = Q3
Q3 = Q2
Q4 = Q1

สังเกตุดีดีนะครับ มันลงท้ายด้วย 5 เสมอ (1+4, 2+3, 3+2, 4+1)

Code (SQL)
SELECT (QUARTER('2014-01-01') % 4) + 1 AS ShiftQ -- ผลลัพธ์ ไตรมาสที่ 4
SELECT (QUARTER('2014-10-01') % 4) + 1 AS ShiftQ -- ผลลัพธ์ ไตรมาสที่ 1



ปล. ยกเว้นว่ากำหนดวันเริ่มต้นของเดือนนั้นฯไม่ใช่วันที่ 01 (ซึ่งมันผิดวิสัยและท้าทายความจริง เช่น 02, 03, 04, ... เป็นต้น)
(แย้งได้หมดครับ งั้นพวกคุณรับเงินเดือน x สิบเท่า แต่รับเงินวันที่ 32 เดือนกุมภายน พ.ศ. xxxx นะ)


ประวัติการแก้ไข
2014-08-10 01:04:27
2014-08-10 01:12:59
2014-08-10 01:26:06
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 01:01:34 By : หน้าฮี
 


 

No. 21



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ปีหนึ่งก็ไปแก้ตาราง ไตรมาสครั้งหนึ่งสินะครับ

เคยได้ยินคำว่าปฏิทิน ร้อยปีไหมครับ (เกินอายุขัยเฉลี่ยของมนุษย์เช่นเราเราด้วยซ้ำไปครับ)
--- 100 ปี x 4 = 400 ไตรมาส เพราะฉะนั้นตาราง tbbudgetquarter ก็สมเหตุสมผลถ้ามีคนบอกว่า สร้างเอาไว้สัก 200 ปี


ประวัติการแก้ไข
2014-08-10 01:11:09
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 01:09:52 By : หน้าฮี
 


 

No. 22



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


จาก #NO 5

Code (SQL)
select c.BudgettypeID, q.BudgetquarterID quarter, c.Budgetcategoryamount amt, sum(b.Clearbillpay) pay 
from tbbudgetquarter q
left join tbclearbill b on b.Clearbilldate>=q.Budgetquarterstart and b.Clearbilldate<=q.Budgetquarterend
left join tbbudgetcategory c on c.BudgettypeID=b.BudgettypeID
group by c.BudgettypeID, q.BudgetquarterID



มันถูกต้องแล้วครับ ถ้าคุณเข้าใจ/พยายามเข้าใจ


ปล. 1 หรือว่า ๑ หรือคำว่า One มันก็เข้าใจตรงกันครับ ยกเว้นคุณคิดว่า 1 + 1 = 3


ประวัติการแก้ไข
2014-08-10 01:43:56
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 01:41:36 By : หน้าฮี
 


 

No. 23



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


เวลา ณ. ตอนนี้ 03:11 PM +7 ผมคิดว่าคุณคงหลับไปแล้ว (อย่าไปฝืน ผมพูดบ่นบ่นไปอย่างนั้นแหละครับ)

เอา #No20-21 ใส่ลงไปใน #NO12



ปล. A, B, C, D, E, F [color=red]ที่ได้มาก็ไร้ความหมายครับ
นี่แหละคืออาชีพโปรแกรมเมอร์ [/color]


ประวัติการแก้ไข
2014-08-10 03:20:07
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 03:16:53 By : หน้าฮี
 


 

No. 24



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 23 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-08-10 03:16:53
รายละเอียดของการตอบ ::
ขอบคุณนะครับ ขอเวลาทำความเข้าใจหน่อยนะครับ ได้ตามต้องการยังไงจะมารายงานให้ครับ


เรื่องบ่นไม่เป็นไรครับ มันยิ่งทำให้เรารู้ว่าเราผิดพลาดตรงไหน


ตอบความคิดเห็นที่ : 19 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-09 23:43:41
รายละเอียดของการตอบ ::
อิอิ ขอบคุณอีกรอบครับ ขอเวลาประมวลผลให้ได้ตามต้องการก่อนครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 09:02:14 By : nest12345
 


 

No. 25



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 22 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-08-10 01:41:36
รายละเอียดของการตอบ ::

ผม select จนได้ BudgettypeID l Budgettype l เงินต้น l เงินคงเหลือปัจจุบัน l ไตรมาส 1 แต่ไม่รู้จะทำไตรมาสอื่นๆอย่างอย่างอะครับ


จากโค้ดข้างต้นอะครับ สามารถสร้างตาราง select แบบนี้ได้ไหมครับ

BudgettypeID ll Budgettype ll เงินต้น ll เงินคงเหลือปัจจุบัน ll ไตรมาส 1 ll ไตรมาส 2 ll ไตรมาส 3 ll ไตรมาส 4 ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------ll----------------ll----------ll-------------------------ll-------------ll-------------ll-------------ll---------------ll
------------------------------------------------------------------------------------------------------------------------------------ ll

โดยถ้า ไตรมาส 2 3 4 ยังไม่มีก็ให้ค่า เป็น 0 ไว้ก่อน ไม่ขึ้นว่า NULL อะครับ


ปล. ผมออกแบบตารางสวยไหมครับ


ประวัติการแก้ไข
2014-08-10 13:58:42
2014-08-10 14:01:00
2014-08-10 14:01:39
2014-08-10 14:02:30
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 13:55:35 By : nest12345
 


 

No. 26



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


, sum(b.Clearbillpay) pay

แก้เป็น

, sum(COALESE( b.Clearbillpay, 0) ) pay



จากที่ผมเคยเขียน statement แล้วให้ลอง ทำดูจะได้มีไอเดียต่อไป (คห 5)

Code (SQL)
select c.BudgettypeID, q.BudgetquarterID quarter, c.Budgetcategoryamount amt, sum(b.Clearbillpay) pay 
from tbbudgetquarter q
left join tbclearbill b on b.Clearbilldate>=q.Budgetquarterstart and b.Clearbilldate<=q.Budgetquarterend
left join tbbudgetcategory c on c.BudgettypeID=b.BudgettypeID
group by c.BudgettypeID, q.BudgetquarterID


ลองสร้าง table จำลอง tbClearbillpay มา แล้วใส่ ข้อมูลให้ ครบ ทุกไตรมาส ดูครับ จะได้เห็นรายละเอียด
ของ statement ว่ามันให้ผลลัพธ์ออกมาอย่างไร


ประวัติการแก้ไข
2014-08-10 14:17:52
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:12:10 By : Chaidhanan
 


 

No. 27



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


Code
ปล. ผมออกแบบตารางสวยไหมครับ



1. ไม่ง่ายเลยครับที่หลายฯ บางฯ คนจะทำได้ดีบน ThaiCreate.com Editor. OK เยี่ยมครับ
2. จากโค้ดข้างต้นอะครับ สามารถสร้างตาราง select แบบนี้ได้ไหมครับ
--- +55555
3. จากข้อที่ 1. และข้อที่ 2. คุณจะให้ผมทำให้ดูเป็นตัวอย่างใช่ไหมครับ?
4. ผมรู้สึกเอ็นดูคุณครับ (คลับคล้ายฯว่าผมเคยเห็นที่ไหน หลานของผมคนไหนหว่า)


ประวัติการแก้ไข
2014-08-10 14:27:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:21:10 By : หน้าฮี
 


 

No. 28



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 26 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 14:12:10
รายละเอียดของการตอบ ::
ขอบคุณครับ


ตอบความคิดเห็นที่ : 27 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-08-10 14:21:10
รายละเอียดของการตอบ ::
ครับ อิอิ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:29:28 By : nest12345
 


 

No. 29



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 26 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 14:12:10
รายละเอียดของการตอบ ::

บน MySQL

1. ผมจะเขียน Store Procedure ผมก็กลัวเจ้าของกระทู้งงครับ
2. ผมจะเขียน SQL Query ผมก็กลัวเจ้าของกระทู้งงครับ
3. ...
n. ...



แต่ผมมีความสุขนะครับคุณตา
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:32:02 By : หน้าฮี
 


 

No. 30



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 28 เขียนโดย : nest12345 เมื่อวันที่ 2014-08-10 14:29:28
รายละเอียดของการตอบ ::
ครับ อิอิ


คุณทำให้ผมนึกถึงคุณ ห้ามตอบเกินวันละสองกระทู้ (ผมไม่เคยโกรธ/เกลียดเขา แม้แต่ครั้งเดียว หรือแม้แต่คิด)

Begin Comming Son Source
...
...
..
End Comming Son



ปล. ผมไม่ได้เขียนโปรแกรมมานานแล้วครับหรือแม้กระทั่งถ่ายเอกสารผมยังทำไม่เป็นเลย (คำตอบ คือสายลม) +


ประวัติการแก้ไข
2014-08-10 14:44:44
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:41:08 By : หน้าฮี
 


 

No. 31



โพสกระทู้ ( 611 )
บทความ ( 0 )



สถานะออฟไลน์


อันนี้กระผมฝากให้กับคุณ ห้ามตอบเกินวันละสองกระทู้
ข้างหลังภาพ (แต่ผมไร้วาสนา)
http://www.youtube.com/watch?v=H1-xZPFHW1E&list=RDqxufaf2x8qA&index=41
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 14:54:22 By : หน้าฮี
 


 

No. 32



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 31 เขียนโดย : หน้าฮี เมื่อวันที่ 2014-08-10 14:54:22
รายละเอียดของการตอบ ::
ยังไงก็ได้ครับ ^^


ฟังอันนี้ดีกว่าครับ


http://www.youtube.com/watch?v=gudZotShVXg&index=2&list=RDlx-RB4RCvc0





ประวัติการแก้ไข
2014-08-10 15:39:37
2014-08-10 15:40:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 15:36:40 By : nest12345
 


 

No. 33



โพสกระทู้ ( 1,521 )
บทความ ( 2 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์
Facebook

เข้ามาฟังเพลง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 16:32:48 By : Krungsri
 


 

No. 34



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 33 เขียนโดย : Krungsri เมื่อวันที่ 2014-08-10 16:32:48
รายละเอียดของการตอบ ::
ขอเชิญมานั่งดื่มน้ำชา ชิวๆ

พลางช่วยผมด้วยนะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 16:36:32 By : nest12345
 


 

No. 35



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


หน้าจอโปรแกรม


ผมจะ selelect ยังไงดีครับ ส่วนนี้ผม คิดไม่ออกจริงครับ

พอมีไกดให้ ไหมครับ

ผมอยากรู้วิธี select ให้ ได้ ตามตารางนี้ อะครับ T^T

Code (SQL)
SELECT tbbudgetcategory.BudgettypeID, tbbudgettype.Budgettype,tbbudgetcategory.Budgetcategoryamount เงินต้น,ABS( SUM( tbclearbill.Clearbillpayer ) - Budgetcategoryamount ) AS เงินคงเหลือ, SUM( tbclearbill.Clearbillpayer ) ไตรมาส1
FROM tbbudgetquarter
LEFT JOIN tbclearbill ON tbclearbill.Clearbilldate >= tbbudgetquarter.Budgetquarterstart
AND tbclearbill.Clearbilldate <= tbbudgetquarter.Budgetquarterend
LEFT JOIN tbbudgetcategory ON tbbudgetcategory.BudgettypeID = tbclearbill.BudgettypeID
LEFT JOIN tbbudgettype ON tbbudgetcategory.BudgettypeID = tbbudgettype.BudgettypeID
WHERE tbbudgetcategory.BudgetyearID = 41
GROUP BY tbbudgetcategory.BudgettypeID


ผมมีเงื่อนไข select ไตรมาสทั้ง 4 ไตรมาสแล้วนะครับ

เราจะเอามาใส่ ในคำสั่ง SELECT ยังไงดีครับ

Code (SQL)

    " BETWEEN '$yeareng2-10-1' AND '$yeareng2-12-31' ";

   "BETWEEN '$yeareng-01-1' AND '$yeareng-03-31' ";

     "BETWEEN '$yeareng-04-1' AND  '$yeareng-06-30' ";

    "BETWEEN '$yeareng-07-1' AND  '$yeareng-09-30' ";



หน้าจอโปรแกรม

หน้าจอโปรแกรม


ประวัติการแก้ไข
2014-08-10 21:20:17
2014-08-10 21:21:30
2014-08-10 21:26:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 21:12:51 By : nest12345
 


 

No. 36



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
<?php
// ae.php
$qr="select c.BudgettypeID ID, q.BudgetquarterID quarter, c.Budgetcategoryamount amt
, sum(COALESCE( b.Clearbillpay, 0) ) pay 
from tbbudgetquarter q
left join tbclearbill b on b.Clearbilldate>=q.Budgetquarterstart and b.Clearbilldate<=q.Budgetquarterend
left join tbbudgetcategory c on c.BudgettypeID=b.BudgettypeID
group by c.BudgettypeID, q.BudgetquarterID";

$mysql=new mysqli('host', 'user', 'pass', 'dbname');
$rs=$mysql->query($qr); $old_typeID='';
$row=array(); $tr=''; $idx=-1;
while($ro=$rs->fetch_assoc() ){
	$pay=(int)$ro['pay']; $typeID=$ro['ID'];
	if($old_typeID!=$typeID){
		$idx++;
		$row[$idx]=array(
			'TypeID'=>$typeID, 'Budget'=>$ro['amt'], 
			'pay1'=>$pay, 'pay2'=>0, 'pay3'=>0, 'pay4'=>0, 
			'allpay'=>$pay
		);
		$old_typeID=$typeID;
	}else{
		$row[$idx]['pay'.$ro['quarter']]=$pay;
		$row[$idx]['allpay'] += $pay;
	}
}
print_r($row);
?>

คงเอาตัวแปร array $row ไปใช้ได้นะครับ ถ้าเอาไปใช้ไม่ได้ ผมให้ F ทันทีเลย 55555


ประวัติการแก้ไข
2014-08-10 21:48:02
2014-08-10 21:51:11
2014-08-10 23:35:18
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 21:47:13 By : Chaidhanan
 


 

No. 37



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 36 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 21:47:13
รายละเอียดของการตอบ ::
ขอบคุณนะครับ

กำลังว่าจะลองทำตาม กระทู้นี้เลยครับ


https://www.thaicreate.com/php/forum/095484.html



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 22:19:54 By : nest12345
 


 

No. 38



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 36 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 21:47:13
รายละเอียดของการตอบ ::
มี แวว จะได้ F อะครับ ค่า print_r($row)

กับตัวโค้ด ยั๋วเยี้ยไปหมดเลยครับ



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 22:26:22 By : nest12345
 


 

No. 39



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ดูรหัสต้นฉบับครับ ว่ามันให้อะไรมาบ้าง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 22:28:15 By : Chaidhanan
 


 

No. 40



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 39 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 22:28:15
รายละเอียดของการตอบ ::
ได้ละครับ แต่ มาสองแถวครับ

เดวยังไงผมเลย ทำตามแบบนี้ก่อนนะครับ

https://www.thaicreate.com/php/forum/095484.html

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 22:48:27 By : nest12345
 


 

No. 41



โพสกระทู้ ( 9,586 )
บทความ ( 2 )



สถานะออฟไลน์


ตามสบายครับ ถ้าเห็น result array ที่ได้แล้วจะถอยหลังไปเรียนใหม่ ผมก็ไม่มีอะไรจะว่าล่ะครับ
ถือว่าศึกษาไปก็แล้วกันครับ วันนี้ไปนอนล่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 22:57:16 By : Chaidhanan
 


 

No. 42



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 41 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-08-10 22:57:16
รายละเอียดของการตอบ ::
ขอโทษนะครับ T^T

แต่ ก็ฝันดีนะครับ. ขอบคุณจริงนะครับ





ประวัติการแก้ไข
2014-08-11 00:06:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-10 23:04:13 By : nest12345
 


 

No. 43



โพสกระทู้ ( 1,666 )
บทความ ( 0 )



สถานะออฟไลน์


ผมมีวิธีมาเสนอไม่รู้ว่าจะสนใจเปล่า เป็นวิธีดิบๆที่ผมเอาไว้ใช้เมื่อผมคิดคิวรี่ชั้นสูงไม่ออก 5 5 5

SELECT มันธรรมดานี่เหละ ค่อยๆไล่ไปทีละตารางอาศัย loop และการคิวรี่หลายๆรอบเข้าช่วย มันทำให้เราแตกประเด็นอะไรได้เยอะมากเลย ถ้าจะทำก็เอากระดาษมาจด ต้องการแบบนี้นะ ตัวนี้วิ่งมาจากไหนเกิดจากอะไร ไปไล่มาจากต้นตอของมัน คิวรี่มันทีละตารางใช้ loop ซ้อน loop บางทีผมคิวรี่ 10 ตารางผมซ้อน loop เอาล้วนๆ ไม่มี join/มีอะไรที่มันทำให้ปวดหัว โค้ดอ่านง่ายแต่มันจะวกวนและยาวไปหน่อย ..... เวลาหาบัคหาง่ายนะเออ เพราะโค้ดมันไล่กันเป็นสเต็บๆเป็นชั้นชั้นเลยถ้ามอง loop ออก ก็ตีโจทย์แตก
ปล.ไม่จำเป็นจริงๆผมไม่เขียนคำสั่ง join ผมยอมเขียนโค้ดที่ยืดยาวและวกวน ดีกว่าโค้ดที่สั้นแต่อธิบายตัวเองได้ยาก


ประวัติการแก้ไข
2014-08-11 04:30:59
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-11 04:27:57 By : meannerss
 


 

No. 44



โพสกระทู้ ( 249 )
บทความ ( 1 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 43 เขียนโดย : meannerss เมื่อวันที่ 2014-08-11 04:27:57
รายละเอียดของการตอบ ::
Select แบบซ้อนลูปนี้ หน้าตาโค้ดจะประมาณไหนหรอครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-08-11 06:51:11 By : nest12345
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : อยากทราบวิธีการ select ในเงื่อนไขไตรมาสครับ โดยไตรมาสเป็นแบบงบประมาณราชการ ครับ (กำลังเร่งพัฒนาครับ อีกสองวันน่าจะทำได้)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่