BMS-HOSxP Community
HOSxP => Report Exchange => ข้อความที่เริ่มโดย: golf_pk ที่ กรกฎาคม 08, 2014, 20:07:23 PM
-
A = ผู้สูงอายุ >= 60 ที่มารับบริการ
โค้ด คือ
select count(distinct(hn))
from vn_stat
where vstdate between "'+d1+'"and "'+d2+'" and age_y>=60'
B = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดกี่คนทุกอายุ
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join vn_stat vn on vn.vn = d1.vn
left outer join person p1 on p1.patient_hn=vn.hn
left outer join house h1 on h1.house_id=p1.house_id
left outer join village v1 on v1.village_id=h1.village_id
left outer join thaiaddress t1 on t1.addressid=v1.address_id
left outer join patient p on p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")
C = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from vn_stat vn
left outer join depression_screen d1 ON vn.vn=d1.vn
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join patient p ON p.hn=vn.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60
D = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดที่ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
LEFT OUTER JOIN depression_screen_evaluate d2 ON d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
LEFT OUTER JOIN suicide_screen_evaluate d3 ON d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
LEFT OUTER JOIN vn_stat vn ON vn.vn = d1.vn
LEFT OUTER JOIN person p1 ON p1.patient_hn=vn.hn
LEFT OUTER JOIN house h1 ON h1.house_id=p1.house_id
LEFT OUTER JOIN village v1ON v1.village_id=h1.village_id
LEFT OUTER JOIN thaiaddress t1 ON t1.addressid=v1.address_id
LEFT OUTER JOIN patient p ON p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")
E = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from vn_stat vn
left outer join depression_screen d1 ON vn.vn=d1.vn
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join patient p ON p.hn=vn.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60 and d1.depression_score>=7
F = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join vn_stat vn on vn.vn = d1.vn
left outer join person p1 on p1.patient_hn=vn.hn
left outer join house h1 on h1.house_id=p1.house_id
left outer join village v1 on v1.village_id=h1.village_id
left outer join thaiaddress t1 on t1.addressid=v1.address_id
left outer join patient p ON p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13") and d1.depression_score>=7
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? อยากทราบว่าผมเขียนโค้ดได้ถูกต้องวัดถุประสงค์ของโจทย์หรือไม่ และลดรูป code ได้บ้างใหม่ เพราะประมวลผลช้ามากครับ ??? ??? ??? ??? ??? ??? ??? ???
-
ดันตัวเองคัฟ
-
กำลังมึนกับคำถาม ขอแกล้งตายแปป :o :o :o
-
ข้อ D กับ F ทำไมต้อง join หลายตาราง ทั้ง ๆ ที่ไม่ได้ใช้ครับ
-
ข้อ D กับ F ทำไมต้อง join หลายตาราง ทั้ง ๆ ที่ไม่ได้ใช้ครับ
คือผมก็ไม่แน่ใจอ่ะครับ ว่าจะใช้ตารางไหนบ้าง ผมได้โค๊ดที่มีในเครื่องเลยยกมาทั้งหมดเลยครับ อาจารย์ชีแนะด้วยครับ
-
กำลังมึนกับคำถาม ขอแกล้งตายแปป :o :o :o
555+ อ.บิ๊กเบิร์ด ครับ คือผมก็ได้โจทย์มาอย่างนี้ครับ ตามแบบฟอร์มเลยครับ
-
ตกลง A-F ผมถูกซักข้อบ้างไมครับ :o :o :o :o
-
A = ผู้สูงอายุ >= 60 ที่มารับบริการ ถูกต้องครับ ถูกหลักอนามัย อิอิ
=================================================================
B = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดกี่คนทุกอายุ
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join vn_stat vn on vn.vn = d1.vn
left outer join person p1 on p1.patient_hn=vn.hn
left outer join house h1 on h1.house_id=p1.house_id
left outer join village v1 on v1.village_id=h1.village_id
left outer join thaiaddress t1 on t1.addressid=v1.address_id
left outer join patient p on p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")
ถ้าจะให้ดี เรียงลำดับตารางใหม่จะดีมากครับ ตัวเราเองจะไล่โค้ดได้ง่ายด้วย ลำดับความสำคัญของตาราง ตารางไหนไม่ได้ใช้ก็ไม่ต้องเอามา JOIN ครับ ถ้าจะนับแค่คน
ตารางพวก house village thaiaddress patient person suicide_screen_evaluate depression_screen_evaluate depression_screen ก็ไม่ต้องเอามารกตา
=================================================================
C = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from vn_stat vn
left outer join depression_screen d1 ON vn.vn=d1.vn
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join patient p ON p.hn=vn.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60
แค่นี้น่าจะพอครับ
SELECT count(distinct(vn.hn))
FROM vn_stat vn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
WHERE vn.vstdate BETWEEN "'+d1+'" AND "'+d2+'"
AND c.clinic in("1","10","2","9","13")
=================================================================
D = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดที่ได้รับการคัดกรองภาวะซึมเศร้า 9Q มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
LEFT OUTER JOIN depression_screen_evaluate d2 ON d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
LEFT OUTER JOIN suicide_screen_evaluate d3 ON d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
LEFT OUTER JOIN vn_stat vn ON vn.vn = d1.vn
LEFT OUTER JOIN person p1 ON p1.patient_hn=vn.hn
LEFT OUTER JOIN house h1 ON h1.house_id=p1.house_id
LEFT OUTER JOIN village v1ON v1.village_id=h1.village_id
LEFT OUTER JOIN thaiaddress t1 ON t1.addressid=v1.address_id
LEFT OUTER JOIN patient p ON p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13")
เรียงลับดับตารางจะดีกว่านี้ครับ เข้าใจง่าย ถูกหลักอนามัยด้วยครับ อิอิ
==================================================================
E = ผู้มารับบริการตั้งแต่ อายุ 60 ปีขึ้นไป ที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from vn_stat vn
left outer join depression_screen d1 ON vn.vn=d1.vn
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join patient p ON p.hn=vn.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and vn.age_y>=60 and d1.depression_score>=7
พอได้คัรบ
==================================================================
F = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ ทั้งหมดที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(vn.hn))
from depression_screen d1
left outer join depression_screen_evaluate d2 on d2.depression_screen_evaluate_id = d1.depression_screen_evaluate_id
left outer join suicide_screen_evaluate d3 on d3.suicide_screen_evaluate_id = d1.suicide_screen_evaluate_id
left outer join vn_stat vn on vn.vn = d1.vn
left outer join person p1 on p1.patient_hn=vn.hn
left outer join house h1 on h1.house_id=p1.house_id
left outer join village v1 on v1.village_id=h1.village_id
left outer join thaiaddress t1 on t1.addressid=v1.address_id
left outer join patient p ON p.hn=vn.hn
LEFT OUTER JOIN clinicmember c ON p.hn=c.hn
where vn.vstdate between "'+d1+'" and "'+d2+'" and c.clinic in("1","10","2","9","13") and d1.depression_score>=7
เรียงลับดับตารางจะดีกว่านี้ครับ เข้าใจง่าย ถูกหลักอนามัยด้วยครับ อิอิ
==================================================================
-
ขอลองไล่ทีละข้อครับ
เอาแต่ผลลัพธ์ตัวเลขใช่ไหมครับ
F = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ
ทั้งหมดที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(v.hn)) from depression_screen d1
left outer join vn_stat v on v.vn = d1.vn
LEFT OUTER JOIN clinicmember c ON c.hn=v.hn
where vn.vstdate between "'+d1+'" and "'+d2+'"
and c.clinic in("1","10","2","9","13")
and d1.depression_score>=7
ไม่รู้ว่าเหมือนกันไหมนะครับ ถ้าตัดตารางที่ไม่เกี่ยวข้องจะทำให้หาข้อมูลได้เร็วขึ้นครับ
-
ขอลองไล่ทีละข้อครับ
เอาแต่ผลลัพธ์ตัวเลขใช่ไหมครับ
F = ผู้ป่วย NCD ได้แก่ คลินิกเบาหวาน,ความดัน,หอบหืด,ไต,หัวใจ
ทั้งหมดที่มีผลการคัดกรอง >= 7 มีกี่คน
โค้ดคือ
select count(distinct(v.hn)) from depression_screen d1
left outer join vn_stat v on v.vn = d1.vn
LEFT OUTER JOIN clinicmember c ON c.hn=v.hn
where vn.vstdate between "'+d1+'" and "'+d2+'"
and c.clinic in("1","10","2","9","13")
and d1.depression_score>=7
ไม่รู้ว่าเหมือนกันไหมนะครับ ถ้าตัดตารางที่ไม่เกี่ยวข้องจะทำให้หาข้อมูลได้เร็วขึ้นครับ
ใช่ครับ เอาเฉพาะผลลัพธ์ตัวเลขครับ
-
ขอบคุณ อ.บิ๊กเบิร์ด ที่คอมเมนต์อย่างละเอียดเลยคับ
;D ;D ;D ;D ;D ;D ;D ;D ;D