MyS(uck)QL

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

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

ก็แค่เลือกแบบ distinct และใช้ GROUP BY
บวกเรียงข้อมูลให้งดงามนิดหน่อย~จบ

เมื่อ run SQL ดังกล่าว ผลปรากฏ error ดังภาพ
ผมนั่งถ่างตาไล่ code สิบบรรทัดนี้อยู่เป็นชั่วโมงเลยครับ 
จริงๆ มันแค่บรรทัดเดียวนี่แหละ
เคาะให้งงเล่นซะงั้น
ดูยังไงผมก็ไม่เห็นสิ่งที่ผิดในคำสั่ง SQL นี้เลย! ให้ตายห่าดิ
ผมพยายามแก้ปัญหาตั้งแต่เช็ค syntax,
เปลี่ยน alias เป็นตัวใหญ่-เล็ก, ภาษาอังกฤษ-ไทย
รวมถึงเอา double quote และ single quote มาครอบ alias
..ทำมันทุกอย่างล่ะครับ ย้ายลำดับโน่น นี่ สารพัด
ทำยังไงก็ขึ้น error เดิม

หลังจากงงอยู่นานมาก ในที่สุดก็เจอจุดผิดครับ
จริงๆ error ก็บอกอยู่ในตัวแล้วล่ะ แต่มัน nonsense โคตรๆ!!!!!!!!!

อันซ้ายคือที่ error ส่วนอันขวาคืออันที่ได้ผลลัพธ์ตามต้องการ
เห็นจุดต่างไหมครับ?
จุดต่างมันคือบรรทัดที่สาม ตรงที่เริ่มเรียกฟังก์ชั่น COUNT
ถ้าตามด้วยวงเล็บเปิดทันที อันนั้นถูก
แต่ถ้ามี space หนึ่งตัว แม่งผิด!เว่ยเฮ่ย!!!!!!!!!

พอรู้ว่าผิดที่ตรงนี้ ..มึนไปหลายนาทีเลยครับ
โอเคว่ามันอาจจะผิดที่ผมเสือกไม่ยอมแพ้กับเรื่องไม่เป็นเรื่อง
แต่…กับไอ้การที่ผมเคาะเว้นระหว่างชื่อฟังก์ชั่นกับวงเล็บระบุ parameter แล้วทำให้ทุกอย่างแป้ก
ยังไงผมก็รับไม่ได้!!!!
- สีที่แบ่งให้ในโปรแกรมเชื่อมต่อฐานข้อมูล
(ผมใช้ Navicat) มันก็ยังบอกเลยว่า
การเว้นวรรคชื่อฟังก์ชั่น ถูกมองเป็นส่วนหนึ่งของไวยากรณ์ SQL (สีน้ำเงิน จากรูปที่ 3) - ผมหา compiler ภาษาอะไรใกล้ตัวไม่ได้
เลยลองเว้นวรรคหนึ่ง space ระหว่างชื่อฟังก์ชั่นกับวงเล็บเปิดรับพารามิเตอร์
กับ javascript ผลก็ปกติ!
ใครก็ได้ช่วยลองกับ DBMS อื่นให้หน่อยเถอะครับ
ผมอยากรู้จริงๆ ว่าตกลงผมผิด หรือ MySQL ผิด? 

ป.ล. ลืมบอก
MySQL เวอร์ชั่น 5.0.45 กะ 5.0.21 ที่เจอปัญหานี้

