ข้ามไปที่เนื้อหาหลัก

ดึงข้อมูลมาจากอีกตาราง มาเก็บในรายงาน ควรเก็บเป็น id อ้างอิง หรือ ชื่อเต็มไปเลย

ข้อมูลในตาราง customer ประกอบด้วย

cust_id     cust_name cust_address
1 นายโรเบิร์ต ...
2 นายวิลสัน ...
3 นายทอมครุซ ...


ข้อมูลในรายงาน sale_report ประกอบด้วย

sale_id sale_date sale_cust_id
1 2012-02-01 3
2 2012-02-03 1
3 2012-02-20 2
สังเกตในฟิลด์ที่ 3 ของตาราง sale_report จะเป็นการเก็บรหัสอ้างอิงลูกค้า

ปัญหาที่พบคืออะไร???

เมื่อเวลาผ่านไป แล้วลูกค้าเกิดเปลี่ยนชื่อ ประวัติการซื้อขายก็จะเพี้ยน
พอเรียกรายงานกลับมาดู ก็จะพบว่าเป็นชื่อใหม่ ส่วนเอกสารที่เคยพิมพ์ออกมาเป็นคนละชื่อ

ตัวอย่างเช่น นายโรเบิร์ต ซื้อรถเมื่อปีที่แล้ว วันที่ 2 ก.พ. 2012 
ข้อมูลทั้งหมดถูกพิมพ์เก็บเข้าแฟ้มไปแล้ว 

หลังจากนั้นเขาเกิดเปลี่ยนชื่อ เป็น นายสตีเว่น
มาปีนี้อยากเรียกดูรายงานของปีก่อน พอปริ้นท์ออกมา ปรากฏว่าเอกสารไม่ตรงกัน

ข้อมูลนายโรเบิร์ตหายไป และมีข้อมูล นายสตีเว่น โผล่มาจากไหนก็ไม่รู้

สาเหตุก็เพราะเรียกชื่อลูกค้า จะใช้ id อ้างอิง ทำให้ได้ข้อมูลที่เขาเปลี่ยนชื่อไปแล้ว
ดังนั้น เพื่อให้รายงานประวัติไม่เพี้ยนไปเพราะมีข้อมูลใหม่มาแทนที่ ให้ปรับปรุงตารางเป็น

sale_id sale_date sale_cust_id sale_cust_name
1 2012-02-01 3 นายทอมครุซ
2 2012-02-03 1 นายโรเบิร์ต
3 2012-02-20 2 นายวิลสัน

เมื่อเพิ่มฟิลด์เก็บชื่อเข้าไปด้วย เมื่อเรียกรายงานเก่า
ต่อให้เปลี่ยนชื่อไป ก็ยังได้ข้อมูลที่ตรงกับเอกสารที่เก็บไว้ในแฟ้มของปีก่อนๆ

และเรายังสามารถแสดงคำเตือนได้ด้วย ว่าปัจจุบันมีการเปลี่ยนชื่อหรือเปล่า
โดยการนำรหัสไปดึงข้อมูลมาเทียบกัน


ตารางทั้ง 2 นี้เป็นเพียงแค่ตัวอย่าง สำหรับงานบางงานแล้ว อาจจะไม่จำเป็นต้องเก็บข้อมูลในฟิลด์ของตารางอื่นไปด้วยก็ได้ แต่งานบางงาน อาจจะต้องการเก็บประวัติซึ่งเกิดขึ้น ณ ตอนนั้น จริงๆ


ในบทความต่อไป เราจะมาพูดถึงเรื่อง ความสำคัญของการกำหนดวันที่ในการเรียกรายงาน
ซึ่งจะต้องใส่ใจให้มากๆ เพราะประวัติคือสิ่งที่ผ่านมาแล้ว ถ้าเราไม่ระมัดระวัง อาจจะหลงกับข้อมูล ณ ปัจจุบันทำให้รายงานเพื้ยนได้

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การแชร์สแกนเนอร์ ถึงทำไม่ได้แต่ก็มีวิธีช่วยประหยัดขั้นตอนการทำงาน

"พี่ครับขอใช้เครื่องพี่สแกนเอกสารหน่อยครับ" "พี่ครับขอสแกนอีกสักสองแผ่นครับ" "พี่ครับพอดีมีเอกสารต้องสแกนเพิ่มน่ะครับ" ทุกครั้งที่ต้องสแกนเอกสารเป็นไฟล์เก็บไว้ในคอมพิวเตอร์ ผมจะต้องลุกไปขอใช้เครื่องพิมพ์แบบ All-In-One ของพี่โจ้ทุกครั้ง บางครั้งก็เกรงใจแกครับ เห็นกำลังใจจดใจจ่ออยู่กับงานตรงหน้า ไหนจะต้องตอบคำถามคำโน้นคนนี้ทาง MSN บ้าง Facebook บ้าง ^___^ พอไปขอใช้เครื่องทีไรก็ดูแกจะไม่สบอารมณ์เท่าไหร่ พยายามค้นหาวิธีแชร์สแกนเนอร์จากในอินเตอร์เน็ตอยู่หลายวัน ก็ไม่เจอวิธีที่จะสามารถแชร์สแกนเนอร์ให้เครื่องอื่นได้ใช้งานได้เลย แชร์ได้แค่ให้สั่งพิมพ์จากเครื่องอื่นๆได้เท่านั้น สุดท้ายก็เลยตัดสินใจใช้เทคนิคเล็กๆ น้อยๆ ที่ได้พบเจอมาใช้ประหยัดเวลา และไม่รบกวนการทำงานและสนทนาของพี่โจ้ ได้วิธีนึง นั่นก็คือ ตั้งค่าสแกนเนอร์ให้บันทึกอัตโนมัติ ไว้ในโฟลเดอร์ที่กำหนด แล้วก็ทำการแชร์โฟลเดอร์เครื่องพี่โจ้ทิ้งไว้ซะเลย 1. ตั้งค่าให้สแกนอัตโนมัติเมื่อกดปุ่มสแกน 2. กำหนดให้บันทึกลงโฟลเดอร์ที่แชร์ไว้แล้ว (แชร์โฟลเดอร์เก็บเอกสารสแกนของคอมฯเครื่องนั้นไว้) 3. ...

เมื่อโปรแกรมเมอร์ไม่ชอบเขียนโค้ดอีกต่อไป

ในวันที่จิตใจเราเลือกหนทางใหม่ ในวันที่ทุกอย่างยังสับสนวุ่นวายเต็มหัว แต่สิ่งน่ากลัวไม่ใช่ "ทางเลือก" แต่มันคือ "ทางรอด" บางทีมันก็ยากนะ ที่จะตัดสินใจว่าสิ่งที่เลือกดีที่สุดสำหรับเราแล้วหรือไม่!! เพราะอนาคตเป็นสิ่งที่คาดเดาได้ยากเหลือเกิน แม้มันจะมีรูปแบบที่ไม่แตกต่างกันนัก และพอจะคาดเดากรรมที่ตามมาก็ตามที และเมื่อวันนั้น วันที่จะต้องตัดสินใจ มาเร็วกว่าที่คิด เราอาจจะไม่ทันตั้งตัวเลยสักนิด ความคิดที่เคยเชื่อมั่นอาจจะสั่นคลอนลงอย่างง่ายดาย ความฝันที่ไม่เคยเริ่ม มันก็เป็นได้แค่ "ความเพ้อฝัน"

FPDF ภาษาไทย กับ วรรณยุกต์ลอย

สำหรับงานเขียนโปรแกรมเว็บแอพฯ ด้วย PHP ที่ต้องทำการส่งออกข้อมูลเป็นไฟล์เอกสาร PDF นั้น เมื่อลองค้นดูแล้วก็เจอกับ FPDF เป็นคลาสที่เขียนขึ้นมาสำหรับงานนี้โดยเฉพาะ แต่กับภาษาไทยแล้วก็ต้องเจอกับปัญหาสุดคลาสสิคคือ รองรับภาษาไทยไม่ร้อยเปอร์เซ็นต์ ^^" บทความที่สอนการใช้งานเบื้องต้นที่ครอบคลุมการทำงานของ FPDF http://www.select2web.com/category/fpdf จะมีบทความแนะนำการใช้ฟอนต์ภาษไทยอยู่ที่ลิงค์นี้ http://www.select2web.com/fpdf/fpdf-lesson-10.html ดาวน์โหลดและสร้างฟอนต์มาใช้เอง http://witkub.blogspot.com/2011/11/fpdf.html สำหรับวิธีแก้ไขปัญหาวรรณยุกต์ลอย ลองดูวิธีจากที่นี่ http://punnawatt.blogspot.com/2009/07/pdf.html สุดท้ายแล้วลองทดลองมาหมด ก็ยังไม่ได้คำตอบที่ตรงใจครับ เพราะไม่สามารถแก้สระลอยได้อย่างแท้จริง เพราะเงื่อนไขข้อมูลจริงไม่อาจจะทำให้เหมือนในตัวอย่างได้ ก็เลยถอดใจเรื่องวรรณยุกต์ลอย นอกจากปัญหาเรื่องวรรณยุกต์ลอย แล้วฟอนต์บางตัวก็เกิดปัญหาวรรณยุกต์ซ้อนทับกันด้วย เช่นคำว่า "นี้" เมื่อผลลัพธ์ออกมา สระอี และวรรณยุกต์โท จะทับกัน สรุป 1. ดาวน์โหล...

PHP CI MANIA