เวลาเขียนคำสั่ง SQL นั้นบางครั้งก็ทำซ้ำๆบ่อยซะจนเบื่อ จึงเป็นที่มาของเรื่องนี้ครับ เราสามารถำหนดสิ่งที่ต้องเปลี่ยนแปลงบ่อยๆให้เป็นตัวแปรไปซะเลย เมื่อจะใช้ก็แค่เปลี่ยนค่านิดหน่อยก็ใช้ได้เลย ซึ่งแบบนี้จะทำให้เราสามารถเตรียมคำสั่ง SQL ไว้ก่อนในสภาพกึ่งสำเร็จรูป ก่อนจะใช้งานจริงนั่นเอง มาดูกันเลยครับ ตัวอย่างการใช้งานนี้ ผมสมมุติว่ามีบ่อยครั้งที่เจ้านายขอให้คุณทำการสรุปรายชื่อสินค้าที่ถูกสั่งซื้อในช่วงเวลาตั้งแต่วันนั้น ถึงวันนี้ คุณก็อาจใช้คำสั่ง SQL ประมาณข้างล่างนี้แหละครับ
คำสั่ง SQL ที่กำหนดค่าลงในเงื่อนไขโดยตรง
SELECT DISTINCT b.pdtid , b.pdtname
FROM invoice_02 b LEFT JOIN invoice_01 a ON b.invid = a.invid
WHERE a.date >= '2013-07-01' AND a.date <= '2013-07-15'
ORDER BY b.pdtid;
สังเกตได้ว่าช่วงวันที่ที่ระบุในเงื่อนไขว่า 2013-07-01 และ 2013-07-15 ลงไปในคำสั่งเลย ทีนี้พอเวลาผ่านไป เมื่อเจ้านายขอให้สรุปรายการจากช่วงวันที่อื่นๆอีก คุณก็ต้องมาแก้ไขคำสั่งกันใหม่อีกใช่ไหมครับ ซึ่งกรณีที่สมมุตินี้ไม่ซับซ้อนอะไรมากก็พอแก้ไขได้ครับ แต่หากคำสั่งมีหลายบรรทัดมากกว่านี้ และต้องอ้างอิงถึงค่าวันที่ 2013-07-01 ซ้ำๆอีกหลายครั้งก่อนจะได้ผลลัพธ์ออกมา เป็นต้น แบบนี้คุณจะพบความลำบากในการแก้ไข หลงลืมแก้ไปสักจุดผลลัพธ์ก็จะผิด ดังนั้นวิธีการที่ง่ายกว่านั้นคือ กำหนดค่าอ้างอิงนั้นๆให้เป็นตัวแปรไปซะเลยโดยใช้คำสั่ง SET เพื่อกำหนดค่าตัวแปรขึ้นมา และกำหนดให้ตัวแปรนั้นๆมีค่าที่เราต้องการ แล้วก็นำชื่อตัวแปรไปอ้างอิงใช้ในคำสั่งแทนการกำหนดค่าโดยตรงนั่นเองดังตัวอย่างข้างล่างนี้ครับ
รูปแบบคำสั่ง SET : SET @[ชื่อตัวแปร] = [ค่าที่กำหนด];
คำสั่ง SQL ที่มีการใช้ตัวแปรแทนการกำหนดค่าโดยตรง
SET @d1='2013-07-01';
SET @d2='2013-07-15';
SELECT DISTINCT b.pdtid , b.pdtname
FROM invoice_02 b LEFT JOIN invoice_01 a ON b.invid = a.invid
WHERE a.date >= @d1 AND a.date <= @d2
ORDER BY b.pdtid;
เอาละครับ ที่เล่ามานี้ก็หวังว่าท่านผู้อ่านคงได้รับสาระประโยชน์จากบทความสั้นๆนี้ ขอบคุณสำหรับการติดตามอ่าน มีอะไรติชมเชิญฝากข้อความไว้ข้างล่างได้เลย และไว้เจอกันใหม่ในหัวข้อถัดไป สวัสดีครับ
กิตติศักดิ์ บุญราศรี
0 ความคิดเห็น