สอบถามเรื่องการคำนวณจำนวนรายการการให้บริการในแต่ละวันค่ะ
เป็นเรื่องการออกแบบ database
กับตารางแบบ column span head แค่นั้นเอง
แต่ที่สำคัญสุดคือ การออกแบบฐานข้อมูล
ต้องออกแบบอย่างนี้มั้ง
- id
- วันที่
- ประเภทบริการ (ล้างรถ/ขัดสี/ล้างห้องเครื่อง)
- ผู้ออกใบขาย (หน้าร้าน/พนักงานขาย)
แล้วๆ query โดย groupๆๆๆ ให้ออกมาเป็นตารางสรุปแบบด้านบน
Date :
2010-07-01 11:43:47
By :
tungman
งง อะไรกันหว่า ดูไม่ยู้เยี่ยงเยย ผมคงฉลาดน้อยเกินไป
เอาเป็นว่านะ ที่นิยมที่สุดดูเหมือนจะเป็น Crystal Report
แต่ถ้าอยากเล่นของยากก็ใช้ System.Drawing ออกแบบรายงานเอาก็ได้
Date :
2010-07-01 11:45:14
By :
whiteshark
เผื่อใครงง ตารางจริงๆ เป็นแบบนี้
จขกท นี้ cap รูปมาให้หน่อยก็ไม่ได้ คนอื่นจะได้เข้าใจง่ายๆ -_-"
Date :
2010-07-01 11:52:47
By :
tungman
cross-tab report ความยากระดับ classic นะคะนั่นอะ
ขอ table structure ที่เกี่ยวข้อง กะความสัมพันธ์ด้วยค่ะ
ต่อไปจะเทียบแยกเฉพาะรายการ
แล้วเทียบเวลาเป็น เดือน ไตรมาส แล้วก้อปี
งานนี้มี temp table ค่ะ กับ query ยาวๆหูดับตับไหม้ค่ะ
Date :
2010-07-01 12:15:18
By :
blurEyes
เย้ย!! เขาถามแค่ 1 ตอบไปซะ 10 ให้ จขกท เขาลองแก้เองบ้างเถอะ
ใจจริงก็อยากฟังคำตอบเหมือนกันนะ แต่พักผ่อนมั่งก็ดี
พักผ่อนน้อย + อากาศเปลี่ยน เดี๋ยวได้ป่วยกันพอดี
Date :
2010-07-01 12:41:27
By :
tungman
ป่วยไปก้อรักษาเอาตามมีตามเกิดค่ะ แต่ไม่เป็นรัยหรอก
ลูกสาวบ้านนี้ตายยากค่ะ
ป่าวจะทำให้ก้อจะแนะๆไปอะค่ะ
Date :
2010-07-01 12:50:24
By :
blurEyes
ถ้าจะเอาหมดนี่ก็ทำให้ไปเลยมั้ย โห....เทพมาเอง
Date :
2010-07-01 12:53:17
By :
whiteshark
555+ ขอบคุณคุณ tungman ที่ cap รูปมาให้นะค่ะ ไม่ทันคิดจริงๆค่ะ
1. เรื่องของ database เราไม่สามารถออกแบบใหม่ได้ค่ะ เราต้องเอาที่เคยสร้างไว้แล้วมาใช้ค่ะ
รูปแบบรายงานมันจะออกมาประมาณนี้ค่ะ
2. อันนี้คือตาราง 2 ตารางที่เราต้องจอยกันเอาข้อมูลมันออกมา
inv_invoiceheader
name : รหัส invoice
invoicedate : วันที่ออก invoice
Flag : บอกว่าขายโดยใคร หน้าร้าน/พนักงานขาย/อื่นๆ
---------------
inv_invoicedetail
name : รหัส invoice
quantity : จำนวน
sku : รหัสสินค้า
serviceid : รหัสการให้บริการ
ืnet : จำนวนเงินสุทธิ (สำหรับคิดจำนวน TOTAL)
--------------------
รบกวนด้วยนะค่ะ cross-tab report นี่ยังไม่เคยใช้งานจริงเลยค่ะ
ขอบคุณทุกคำตอบด้วยค่ะ
Date :
2010-07-01 14:07:17
By :
somooo
table น่าจะยังไม่ครบนะคะ มันน่าจะมี item category หรือ service category
สังเกตุจาก หัวรายงานที่มีการ merge สองแถว น่ะค่ะ
แล้วช่วยกรุณา อธิบาย จุดประสงค์การใช้งานของ สองตาราง
และรายละเอียดของแต่ละฟิลด์ด้วยค่ะ
หรือถ้าทำ DATADICT แล้วก็เอามาแปะเลยค่ะ
โดยเฉพาะตาราง inv_invoicedetail ค่ะ
Date :
2010-07-01 19:08:00
By :
blurEyes
เอาแบบตัวอย่างนิดๆ พอให้เข้าใจได้มั้ยคะ เด๋วให้คุณ blureyes ทำมากเกินไป เกรงใจค่ะ เอาแบบพอเป็นแนวทางสักบริการนึง แล้วเราก็สามารถเขียนเพิ่มเองได้แบบไปทางขวาอะค่ะ อยากได้เพิ่มเท่าไหร่ก็เขียนเพิ่มเอาเอง ประมาณนี้ค่ะ
Date :
2010-07-05 18:16:27
By :
somooo
เริ่มด้วยตั้งแกนของรายงายขึ้นมาก่อน
แล้วแต่ว่าจะใช้อะไรอะค่ะ ถ้าข้อมูลมีซ้ำกันก้อ distinct ออกไป
อย่างตัวอย่างนี่คือ วันที่ค่ะ ต้อง build query ให้ได้วันที่ออกมา
จากนั้นมาพิจารณาคอลัมภ์ว่ามีข้อมูลที่สัมพันธ์กับ
ตัว field ที่ตั้งแกนรายงานอย่างไร อาจมีการ ใช้สมการหรือ aggregate function
ในช่วงนี้เพื่อใช้เชื่อมกันกับ field แกนรายงานแบบ one-one
และทำซ้ำไปเรื่อยๆจนครบทุกคอลัมภ์ค่ะ
cross tab report มีหลักการเท่านี้ค่ะ
Date :
2010-07-05 20:11:58
By :
blurEyes
ขอรบกวนดูโค๊ตสักชุดนึงได้มั้ยคะ
Date :
2010-07-06 09:14:29
By :
somooo
พอดีเขียนคิวรี่ดึงออกมาตัวนึงของ TKD
SELECT invoicedate,SUM(TKD_D) AS D,SUM(TKD_S) AS S,SUM(TKD_A) AS A
FROM
(SELECT * FROM
(SELECT a.invoicedate,b.serviceid,SUM(b.quantity) AS TKD_D ,0 AS TKD_S, 0 AS TKD_A
FROM inv_invoiceheader a inner join inv_invoicedetail b on a.name = b.name
WHERE a.flag ='หน้าร้าน' GROUP BY a.invoicedate,b.serviceid)
UNION ALL
(SELECT a.invoicedate,b.serviceid,0 AS TKD_D,SUM(b.quantity) AS TKD_S ,0 AS TKD_A
FROM inv_invoiceheader a inner join inv_invoicedetail b on a.name = b.name
WHERE a.flag ='พนักงานขาย' GROUP BY a.invoicedate,b.serviceid)
UNION ALL
(SELECT a.invoicedate,b.serviceid,0 AS TKD_D,0 AS TKD_S,SUM(b.quantity) AS TKD_A
FROM inv_invoiceheader a inner join inv_invoicedetail b on a.name = b.name
WHERE a.flag ='AA' GROUP BY a.invoicedate,b.serviceid)) T
WHERE Year(T.InvoiceDate) = 2010 AND Month(T.InvoiceDate)=5 AND T.serviceid = '2001'
GROUP BY T.invoicedate
แล้วมัน error รันไม่ได้ ใน mysql นะค่ะ ไม่ทราบว่าเพราะอะไรใครทราบบ้างคะ
Date :
2010-07-07 13:48:13
By :
somooo
งั้น ขอ script gen table ที่เกี่ยวข้องจาก code มาละกันจะลองรันดูให้ค่ะ
นอนน้อยมาหลายวันละ มองเพียวๆแบบนี้มองไม่ออกหรอกค่ะ
ไม่ต้องทำเองนะคะ ใช้ mysql query browser ไป click ขวา ที่ชื่อ table จะมี popup โผล่มา
มานจะเก็บมาใน clipboard อะค่ะ
ก้อทยอยเอามา patse ละกัน
Date :
2010-07-07 14:54:24
By :
blurEyes
ไม่เป็นไรค่ะ พอดีตอนนี้เปลี่ยนคำสั่งแล้ว ใช้งานได้ตามที่ต้องการแล้วค่ะ ขอบคุณมากๆเลยนะค่ะ
พักผ่อนด้วยนะค่ะคุณ blurEyes
Date :
2010-07-08 11:21:29
By :
somooo
ขอบคุณค่า ^^
Date :
2010-07-08 11:35:19
By :
blurEyes
Load balance : Server 02