BMS-HOSxP Community

HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: onlinelp ที่ กุมภาพันธ์ 28, 2008, 15:41:30 PM

หัวข้อ: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: onlinelp ที่ กุมภาพันธ์ 28, 2008, 15:41:30 PM
ช่วยผมด้วยครับทำมัยยังมีผู้ป่วยซ้ำกันอยู่ผมผิดตรงไหนครับ... ???


select distinct pt.hn,ov.hospmain,ov.vstdate,pt.cid,pt.pname,pt.fname,pt.lname,pt.birthday,ov.age_y,
pt.sex,os.bw,os.height,concat(os.bpd,"/",os.bps)as mmhg,pt.addrpart,pt.moopart,pt.tmbpart,pt.amppart,pt.chwpart,
concat(pt.addrpart,"Á.",pt.moopart,'  '," µ.",t3.name,'  ',"Í.",t2.name,' '," ¨.",t1.name)
as fulladdressname,pt.nationality,ov.pdx,i.name
from vn_stat ov
 left outer join opdscreen os on os.hn=ov.hn
 left outer join patient pt on pt.hn=ov.hn
 left outer join ovst ovst on ovst.hn =ov.hn
 left outer join icd101 i on i.code = ov.main_pdx
 left outer join pttype ptt on ptt.pttype = ov.pttype

left outer join thaiaddress t1 on t1.chwpart=pt.chwpart and
     t1.amppart="00" and t1.tmbpart="00"
left outer join thaiaddress t2 on t2.chwpart=pt.chwpart and
     t2.amppart=pt.amppart and t2.tmbpart="00"
left outer join thaiaddress t3 on t3.chwpart=pt.chwpart and
    t3.amppart=pt.amppart and t3.tmbpart=pt.tmbpart
where ov.vn>="500101000000" and  ov.vn<="5033199999"
and ov.age_y>= 0
and ov.age_y<= 200
and ( (ov.pdx >= "I10" and ov.pdx <= "I159")

or (ov.pdx >= "e10" and ov.pdx <= "e149")

or (ov.pdx >= "j40" and ov.pdx <= "j479")

or (ov.pdx >= "i60" and ov.pdx <= "i699")

or (ov.pdx >= "i20" and ov.pdx <= "I259"))

 limit 10




ขอบคุณล่วงหน้าครับ :o
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: spoons ที่ กุมภาพันธ์ 28, 2008, 16:15:17 PM
 แก้ไข 2 บรรทัดนี้ครับ

 left outer join opdscreen os on os.vn=ov.vn

 left outer join ovst ovst on ovst.vn =ov.vn
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: onlinelp ที่ กุมภาพันธ์ 28, 2008, 16:29:56 PM
ขอบคุณมากครับ... ;D :D :D
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: pop_hosxp ที่ กุมภาพันธ์ 29, 2008, 07:56:27 AM
น่าจะได้แก้ตรงนี้ด้วยครับ

where ov.vn>="500101000000" and  ov.vn<="5033199999"

รู้สึกว่า vn ยังไม่ครบ 12 หลัก แต่ผมว่าควรดึงจาก vstdate ดีกว่านะครับ
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: onlinelp ที่ กุมภาพันธ์ 29, 2008, 13:57:42 PM
ยังซ้ำอยู่เลยอ่ะคับ  ??? ??? ???
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: SrWooD ที่ กุมภาพันธ์ 29, 2008, 14:07:24 PM
ช่วยส่ง code ที่แก้ไขแล้วมาให้ดูใหม่ด้วยครับ

และสอบถามเพิ่มเติมครับ ว่าต้องการหาข้อมูลอะไรจาก sql นี้ครับ

 ??? ??? ???
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: admin30 ที่ กุมภาพันธ์ 29, 2008, 14:27:03 PM
ลองแบบนี้ดูครับ

select distinct(pt.hn),ov.hospmain,ov.vstdate,pt.cid,pt.pname,pt.fname,pt.lname,pt.birthday,ov.age_y,
pt.sex,os.bw,os.height,concat(os.bpd,"/",os.bps)as mmhg,pt.addrpart,pt.moopart,pt.tmbpart,pt.amppart,pt.chwpart,
concat(pt.addrpart,"&Aacute;.",pt.moopart,'  '," &micro;.",t3.name,'  ',"&Iacute;.",t2.name,' '," &uml;.",t1.name)
as fulladdressname,pt.nationality,ov.pdx,i.name
from vn_stat ov
 left outer join opdscreen os on os.hn=ov.hn
 left outer join patient pt on pt.hn=ov.hn
 left outer join ovst ovst on ovst.hn =ov.hn
 left outer join icd101 i on i.code = ov.main_pdx
 left outer join pttype ptt on ptt.pttype = ov.pttype
left outer join thaiaddress t1 on t1.chwpart=pt.chwpart and
     t1.amppart="00" and t1.tmbpart="00"
left outer join thaiaddress t2 on t2.chwpart=pt.chwpart and
     t2.amppart=pt.amppart and t2.tmbpart="00"
left outer join thaiaddress t3 on t3.chwpart=pt.chwpart and
    t3.amppart=pt.amppart and t3.tmbpart=pt.tmbpart
where ov.vn>="500101000000" and  ov.vn<="5033199999"
and ov.age_y>= 0
and ov.age_y<= 200
and ( (ov.pdx between "I10" and  "I159")
or (ov.pdx between "e10" and  "e149")
or (ov.pdx between "j40" and   "j479")
or (ov.pdx between "i60" and  "i699")
or (ov.pdx between "i20" and "I259"))
 limit 20
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: spoons ที่ กุมภาพันธ์ 29, 2008, 14:52:24 PM
วิธีที่1 ตัด column ที่จะทำให้ record แตกต่างกัน เช่น vstdate ,bps,bpd เพราะถึงแม้จะเป็น hn เดียวกัน
          แต่มี column อื่น ต่างกัน ก็จะถือว่าเป็น record ที่แตกต่างกัน

วิธีที่2 เปลี่ยนจาก left outer join เป็น inner join
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: SrWooD ที่ กุมภาพันธ์ 29, 2008, 15:57:44 PM
ลองแบบนี้ดูครับ

select distinct pt.hn,ov.hospmain,ov.vstdate,pt.cid,pt.pname,pt.fname,pt.lname,pt.birthday,ov.age_y,
pt.sex,os.bw,os.height,concat(os.bpd,"/",os.bps)as mmhg,pt.addrpart,pt.moopart,pt.tmbpart,pt.amppart,pt.chwpart,
concat(pt.addrpart,"&Aacute;.",pt.moopart,'  '," &micro;.",t3.name,'  ',"&Iacute;.",t2.name,' '," &uml;.",t1.name)
as fulladdressname,pt.nationality,ov.pdx,i.name
from vn_stat ov
 left outer join opdscreen os on os.vn=ov.vn
 left outer join patient pt on pt.hn=ov.hn
 left outer join ovst ovst on ovst.vn =ov.vn
 left outer join icd101 i on i.code = ov.main_pdx
 left outer join pttype ptt on ptt.pttype = ov.pttype

left outer join thaiaddress t1 on t1.chwpart=pt.chwpart and
     t1.amppart="00" and t1.tmbpart="00"
left outer join thaiaddress t2 on t2.chwpart=pt.chwpart and
     t2.amppart=pt.amppart and t2.tmbpart="00"
left outer join thaiaddress t3 on t3.chwpart=pt.chwpart and
    t3.amppart=pt.amppart and t3.tmbpart=pt.tmbpart
where ov.vn>="500101000000" and  ov.vn<="5033199999"
and ov.age_y>= 0
and ov.age_y<= 200
and ( (ov.pdx >= "I10" and ov.pdx <= "I159")
or (ov.pdx >= "e10" and ov.pdx <= "e149")
or (ov.pdx >= "j40" and ov.pdx <= "j479")
or (ov.pdx >= "i60" and ov.pdx <= "i699")
or (ov.pdx >= "i20" and ov.pdx <= "I259"))
group by ov.hn
limit 10

แต่ว่ายังไม่เข้าใจว่าต้องการหาข้อมูลอะไรจาก sql นี้ครับ วานบอก

 :-\ :-\ :-\
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: onlinelp ที่ มีนาคม 03, 2008, 11:46:03 AM
 SrWoOd  <<<<ขอบคุณครับพี่
คือรายงานนี้ผมต้องการจำนวนผู้ป่วยที่เป็นโรคเรื้อรัง 5 โรคดังนี้
1. เบาหวาน
2. ความดันดลหิตสูง
3. หัวใจขาดเลือด
4. หลอดเลือดสมอง
5. ปอดอุดกั้น

โดยนับจำนวนในปีนั้นๆมีกี่ราย...?
ขอบคุณครับผมจะลองนำไปลองครับ.... :o :o
หัวข้อ: Re: ขอคำแนะนำเรื่อง code นี้หน่อยคับ
เริ่มหัวข้อโดย: onlinelp ที่ มีนาคม 03, 2008, 12:01:24 PM
ขอบคุณพี่ๆทุกท่านเลยครับที่ให้คำแนะนำทำได้แล้วครับ
 ;D ;D ;D