ผู้เขียน หัวข้อ: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ  (อ่าน 3380 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ bankza

  • Newbie
  • *
  • กระทู้: 3
  • Respect: 0
    • ดูรายละเอียด
รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« เมื่อ: มิถุนายน 27, 2018, 11:24:58 AM »
0
โจทย์คือ

อยากทราบเด็กอายุ 12 ปี ที่มีหัตถการ 2330011 กับ 2338610 << ICD10TM

ตั้งแต่วันที่ 1 ต.ค. 60 - 30 มิ.ย. 61

ขอความกรุณาด้วยครับ _/\_

ออฟไลน์ BlueEye

  • Newbie
  • *
  • กระทู้: 40
  • Respect: +5
    • ดูรายละเอียด
Re: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« ตอบกลับ #1 เมื่อ: มิถุนายน 27, 2018, 13:38:38 PM »
0
ที่ให้มาเป็น 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]
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 ปีบริบูรณ์แล้วจะต้องเอามามั้ย แต่คิวรี่นี้ก็ยังไม่ได้คำนวนอายุแบบละเอียดครับ แค่เอามาใช้เป็นแนวทางเฉยๆ เพราะถ้าต้องคำนึงถึงอายุ เดือนที่เกินมา หรือวันที่เกินมาจากอายุบริบูรณ์จะต้องเอามั้ยด้วย
« แก้ไขครั้งสุดท้าย: มิถุนายน 27, 2018, 13:43:22 PM โดย BlueEye »
Si Prachan Hospital : Suphanburi
OS : CentOS 7
MySQL : MariaDB 10.1.22

ออฟไลน์ bankza

  • Newbie
  • *
  • กระทู้: 3
  • Respect: 0
    • ดูรายละเอียด
Re: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« ตอบกลับ #2 เมื่อ: มิถุนายน 28, 2018, 09:09:20 AM »
0
ขอบคุณครับ

แต่ผมลองเอาไปคิวรี่แล้ว มันไม่โชว์ข้อมูลอะครับ โชว์แต่รายชื่อคอลัมน์ที่เรียกมา + กับยังไม่ค่อยเข้าใจ code ด้วยครับ

ก่อนอื่นเอาแบบนี้ก่อนได้ไหมครับ เรียกดูข้อมูลเด็กอายุ 12 ปี ที่มาหัตถการ 1 ต.ค. 60 - 30 มิ.ย. 61 ก่อนผมจะได้ลองศึกษาดู

ส่วนถ้าเด็กในเงื่อนไขทำหัตถการมากกว่า 1 ครั้ง แต่อายุเกินเงื่อนไข คงไม่เอามานับอะครับ


ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 409
  • Respect: +12
    • ดูรายละเอียด
Re: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« ตอบกลับ #3 เมื่อ: มิถุนายน 28, 2018, 18:41:35 PM »
+1
select v.vn,v.hn,v.vstdate,v.age_y age
,pdx,dx0,dx1,dx2,dx3,dx4,dx5
,icd10tm_operation_code icd10tm
from vn_stat v
join dtmain dt on dt.vn=v.vn
join dttm tm on tm.code=dt.tmcode
where v.vstdate between '2017-10-1' and '2018-6-30'
and v.age_y=12
and icd10tm_operation_code in ('2330011','2338610')
*****
กรุณาถามโจทย์ที่ชัดเจน
เช่น หัตถการนี้..เป็นหัตถการของทันตกรรม เป้นต้น
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ bankza

  • Newbie
  • *
  • กระทู้: 3
  • Respect: 0
    • ดูรายละเอียด
Re: รบกวนสอนเขียนคำสั่ง SQL ใน PCU ทีครับ
« ตอบกลับ #4 เมื่อ: มิถุนายน 29, 2018, 08:49:28 AM »
0
select v.vn,v.hn,v.vstdate,v.age_y age
,pdx,dx0,dx1,dx2,dx3,dx4,dx5
,icd10tm_operation_code icd10tm
from vn_stat v
join dtmain dt on dt.vn=v.vn
join dttm tm on tm.code=dt.tmcode
where v.vstdate between '2017-10-1' and '2018-6-30'
and v.age_y=12
and icd10tm_operation_code in ('2330011','2338610')
*****
กรุณาถามโจทย์ที่ชัดเจน
เช่น หัตถการนี้..เป็นหัตถการของทันตกรรม เป้นต้น

ขอโทษด้วยครับที่บอกโจทย์ไม่ชัดเจนครับ

ขอบคุณมากครับ