ที่ให้มาเป็น code เลข 7 หลัก แล้วก็โจทย์บอกว่าต้องการหัตการ ก็เลยเดาว่าน่าจะเป็น nondrugitems มากกว่า
แล้วโจทย์บอกว่าเอาเด็กอายุ 12 เท่านั้น ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
หรือว่า เอาที่เท่ากับหรือต่ำกว่า 12 ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) <= 12
หรือว่า ตั้งแต่ 12 ขึ้นไป ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) >= 12
SELECT p.hn,p.pname,p.fname,p.lname,
TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) AS _age,
v.vstdate,i.icode,n.`name`
FROM
patient AS p
INNER JOIN ovst AS v ON p.hn = v.hn
INNER JOIN opitemrece AS i ON v.vn = i.vn
INNER JOIN nondrugitems AS n ON i.icode = n.icode
WHERE v.vstdate BETWEEN "2017-10-01" AND "2018-06-30" AND
i.icode IN ("2330011", "2338610") AND
TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
/*
แล้วโจทย์บอกว่าเอาเด็กอายุ 12 เท่านั้น ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) = 12
หรือว่า เอาที่เท่ากับหรือต่ำกว่า 12 ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) <= 12
หรือว่า ตั้งแต่ 12 ขึ้นไป ตรง WHERE จะเป็น TIMESTAMPDIFF(YEAR, p.birthday, v.vstdate) >= 12
หรือ ......
*/
จากคิวรี่เป็นการใช้อายุ ณ วันที่ visit ก็เลยสงสัยต่อว่า ถ้าเด็กทำหัตการมากกว่า 1 ครั้งในช่วงเวลาที่ต้องการ แต่ ครั้งหลังเด็กอายุ มากกว่า 12 ปีบริบูรณ์แล้วจะต้องเอามามั้ย แต่คิวรี่นี้ก็ยังไม่ได้คำนวนอายุแบบละเอียดครับ แค่เอามาใช้เป็นแนวทางเฉยๆ เพราะถ้าต้องคำนึงถึงอายุ เดือนที่เกินมา หรือวันที่เกินมาจากอายุบริบูรณ์จะต้องเอามั้ยด้วย