รายละเอียดของการตอบ ::
ไม่ต้องอายครับ ทุกคนก็เริ่มจากผิดๆถูกๆมาแบบนี้ครับ ผมก็เป็นหนึ่งในนั้น และไม่ต้องเกรงใจครับ ยินดีและเต็มใจช่วยครับ
อธิบายจากที่ถามนะครับ a กับ b เป็นชื่อ Alias ที่ผมตั้งขึ้นแทนชื่อตารางครับ จะได้เรียกใช้ได้ง่ายและกระชับไม่สับสน
ถ้าพูดภาษาทั่วไปง่ายๆก็ตั้งชื่อเล่นให้มันครับ ยกตัวอย่าง category a เขียนเต็มๆ (category AS a) หรือ products b (products AS b)
นั่นก็หมายความว่าผมตั้งชื่อเล่นให้ตาราง category เป็น a และตาราง products เป็น b ซึ่งต่อจากนี้ไปถ้าผมจะเขียนอ้างอิงชื่อตาราง
ผมสามารถพิมแค่ a หรือ b ได้เลย เช่น a.id หมายความว่าผมกำลังอ้างอิงถึง ฟิลด์ id ที่อยู่ในตาราง category อยู่ครับ
จะอ้างอิงชื่อเต็มก็ได้ครับ category.id ซึ่งมีค่าเหมือนกันกับ a.id ครับ เฉกเช่นเดียวกับ b.cat_id นั่นก็คือ products.cat_id
ซึ่งกำลังอ้างอิงถึงฟิลด์ cat_id ที่อยู่ในตาราง products สาเหตุที่ต้องอ้างอิงชื่อตารางและชื่อฟิลด์ในลักษณะนี้ (table.field) ก็เพราะว่า
เราทำการ join ตารางอยู่ครับ ซึ่งนำสองตารางมาทำงานร่วมกันโดยสัมพันธ์ เพื่อเป็นการบอกให้โปรแกรมมันรู้ว่า
เรากำลังอ้างอิงชื่อฟิลด์นี้ ที่อยู่ในตารางนั้น อะไรทำนองนี้ครับ เพราะบางทีทั้งสองตารางมีชื่อฟิลด์ที่เหมือนกัน
เช่นฟิลด์ id ดังนั้นจึงเป็นสาเหตุที่เราจะต้องอ้างอิงเฉพาะเจาะจงว่าของตารางไหน table1.id , table2.id เป็นต้น