MySql คำสั่ง Update ข้อมูลโดยดึงจากฟิลด์อีกตารางมาใส่

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

1. ตารางชื่อ employee เก็บข้อมูลพนักงาน มีฟิลด์ emp_id,name,pos_id (รหัส,ชื่อพนักงาน,รหัสตำแหน่ง)
2. ตารางชื่อ position เก็บข้อมูลตำแหน่งที่มีในบริษัท มีฟิลด์ pos_id,name (รหัสตำแหน่ง,ชื่อตำแหน่ง)

วันดีคืนดีเราจำเป็นต้องเพิ่มฟิลด์ที่ชื่อว่า emp_count ในตาราง position เพื่อเก็บจำนวนพนักงานในแต่ล่ะตำแหน่ง จะได้เป็น ตารางชื่อ position เก็บข้อมูลตำแหน่งที่มีในบริษัท มีฟิลด์ pos_id,name,emp_count (รหัสตำแหน่ง,ชื่อตำแหน่ง,จำนวนพนักงาน) ทีนี้เราจะต้องการนำ “จำนวนพนักงาน” ของแต่ละตำแหน่งมาใส่ในฟิลด์ emp_count ที่เราสร้างขึ้น เราก็ใช้คำสั่ง Sql ดังนี้

จากคำสั่งด้านบนเราก็จะได้จำนวนพนักงานของแต่ล่ะตำแหน่งเพื่อนำมากรอกลงในฟิลด์ emp_count แล้ว แล้วถ้าเกิดกรณีตำแหน่งมีร้อยกว่าตำแหน่งล่ะ ไม่กรอกจนมือหงิกเหรอ? นี่ล่ะจึงทำให้เราต้องใช้คำสั่ง Sql เพื่อ ดึงข้อมูลจากฟิลด์ของอีกตารางนึงมา Update นั่นเอง วิธีการมีดังนี้

อธิบายคำสั่งด้านบนดังนี้

บรรทัดที่ 1 อัพเดทตาราง position ตั้งชื่อย่อเป็น pos ขั้นด้วย ,
บรรทัดที่ 2 ภายในวงเล็บนำคำสั่งที่เรานับจำนวนพนักงานด้านบนมาใส่แล้วตั้งชื่อย่อตารางเป็น emp
บรรทัดที่ 3 ให้นำ emp.emp_count จำนวนพนักงานที่ได้จากการนับมาอัพเดทใส่ในฟิลด์ pos.emp_count
บรรทัดที่ 4 มีเงื่อนไขให้อัพเดทรหัสตำแหน่งรหัสเดียวกัน “ไม่งั้นเดี๋ยวอัพเดทผิดนะจ๊ะ”

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