BMS-HOSxP Community

HOSxP => Report Exchange => ข้อความที่เริ่มโดย: gweeped ที่ กรกฎาคม 06, 2011, 11:31:11 AM

หัวข้อ: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: gweeped ที่ กรกฎาคม 06, 2011, 11:31:11 AM
คือต้องการแสดงข้อมูลข้อผู้ป่วยที่มารับบริการ ซึ่งสามารถเลือกเฉพาะประเภทต่างๆได้
<สามารถเลือกตรง er_pt_type ได้>

ช่วยดูคำสั่ง SQL หน่อยฮะว่ามีส่วนไหนผิดรึป่าว
เพราะมันแสดงข้อมูลซ้ำออกมาฮะ

อ้างถึง
select pt.pname, pt.fname, pt.lname,pt.informaddr, er_list, er_dch_type.name ,YEAR( FROM_DAYS( DATEDIFF( NOW( ) , pt.birthday ) ) ) as Age ,
from vn_stat ov ,patient pt ,er_regist rg ,er_dch_type , er_oper_code
where  ov.vn=rg.vn and pt.hn=ov.hn  and  er_pt_type= '5'

ผลตรงที่เป็น er_dch_type.name
มันออกมาซ้ำๆฮะ

หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กรกฎาคม 06, 2011, 11:48:49 AM
  " , "  เกินมา  หน้า   from  vn_stat

ไม่น่า นำ er_list มาด้วย  ทุก vn มีหลายกิจกรรม

group  by ov.vn ซะครับ...
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: มนตรี บอยรักยุ้ยคนเดียว ที่ กรกฎาคม 06, 2011, 11:59:32 AM
  " , "  เกินมา  หน้า   from  vn_stat

ตาดีนะครับ

select pt.pname, pt.fname, pt.lname,pt.informaddr, er_list, er_dch_type.name ,YEAR( FROM_DAYS( DATEDIFF( NOW( ) , pt.birthday ) ) ) as Age from vn_stat ov ,patient pt ,er_regist rg ,er_dch_type , er_oper_code
where  ov.vn=rg.vn and pt.hn=ov.hn  and  er_pt_type= '5'
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: gweeped ที่ กรกฎาคม 06, 2011, 13:13:17 PM
  " , "  เกินมา  หน้า   from  vn_stat

ไม่น่า นำ er_list มาด้วย  ทุก vn มีหลายกิจกรรม

group  by ov.vn ซะครับ...

แหะๆ คอมม่านี้เหนแล้วฮะตอนรันมันพ้องเออเร่อมาแล้ว T^T

ที่เอา er_list มาด้วยเพราะอยากได้ การรักษา
อ้ออีกอย่างคับ อยากได้ อาการด้วย ต้องไปดึงฟิลมาจาก table ไหนฮ่ะ

ปล.ลองรันออกมาแล้วหน้าตามันเป็นเยี่ยงนี้อ่ะครับ
ซึ่งผลมันยังผิดอยู่ เพราะสถานะที่แสดงมันต้องเป็น 'กลับบ้าน' ฮะ  ???

หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กรกฎาคม 06, 2011, 13:15:12 PM
  " , "  เกินมา  หน้า   from  vn_stat

ไม่น่า นำ er_list มาด้วย  ทุก vn มีหลายกิจกรรม

group  by ov.vn ซะครับ...

แหะๆ คอมม่านี้เหนแล้วฮะตอนรันมันพ้องเออเร่อมาแล้ว T^T

ที่เอา er_list มาด้วยเพราะอยากได้ การรักษา
อ้ออีกอย่างคับ อยากได้ อาการด้วย ต้องไปดึงฟิลมาจาก table ไหนฮ่ะ

opdscreen ครับ...จับค่าที่ vn กับ vn ใน er_regist
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: gweeped ที่ กรกฎาคม 06, 2011, 13:36:13 PM
  " , "  เกินมา  หน้า   from  vn_stat

ไม่น่า นำ er_list มาด้วย  ทุก vn มีหลายกิจกรรม

group  by ov.vn ซะครับ...

แหะๆ คอมม่านี้เหนแล้วฮะตอนรันมันพ้องเออเร่อมาแล้ว T^T

ที่เอา er_list มาด้วยเพราะอยากได้ การรักษา
อ้ออีกอย่างคับ อยากได้ อาการด้วย ต้องไปดึงฟิลมาจาก table ไหนฮ่ะ

opdscreen ครับ...จับค่าที่ vn กับ vn ใน er_regist

ขอทำความเข้าใจและลองก่อนฮะ  ???
งงมากเพราะ เพิ่งมาจับ sql ในรอบห้าปี
ทิ้งไปตั้งแต่สอบเส็ดตั้งแต่ตอนที่่เรียนเมื่อปีสาม
เพราะไม่คิดว่าตัวเองจะมาทำสายนี้ T__T
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: เกื้อกูล ครับ.. ที่ กรกฎาคม 06, 2011, 13:45:03 PM
เอา from er_dch_type เป็นตารางหลักซิ...จะเร็วขึ้น...

join  er_regist    vn

join ovst    vn

join patient ที่  hn ของ patient=er_ovst.hn

where  vstdate between "xxxx-xx-xx"  and "yyyy-yy-yy"  and er_dch_type ="5"
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: gweeped ที่ กรกฎาคม 07, 2011, 09:51:31 AM
สรุปใช้ query builder ช่วยฮะ แล้วเอามาแต่งเพิ่ม
ออกมาเลยกลายเป็นแบบนี้ฮะ

SELECT patient.pname, patient.fname, patient.lname, patient.informaddr, er_list,er_dch_type.name, opdscreen.cc , YEAR( FROM_DAYS( DATEDIFF( NOW( ) , patient.birthday ) ) ) as Age
FROM er_regist INNER JOIN
  er_dch_type ON er_dch_type.er_dch_type = er_regist.er_dch_type INNER JOIN
  vn_stat ON vn_stat.vn = er_regist.vn INNER JOIN
  patient ON vn_stat.hn = patient.hn INNER JOIN
  opdscreen ON opdscreen.vn = er_regist.vn
GROUP BY vn_stat.vn, patient.pname, patient.fname, patient.lname,
  patient.birthday, patient.informaddr, er_regist.er_pt_type, opdscreen.cc
HAVING er_regist.er_pt_type = 5
หัวข้อ: Re: รบกวนอาจารย์ทั้งหลายดูคำสั่ง SQL ให้หน่อยคับ
เริ่มหัวข้อโดย: udomchok ที่ กรกฎาคม 07, 2011, 19:55:43 PM
สรุปใช้ query builder ช่วยฮะ แล้วเอามาแต่งเพิ่ม
ออกมาเลยกลายเป็นแบบนี้ฮะ

SELECT patient.pname, patient.fname, patient.lname, patient.informaddr, er_list,er_dch_type.name, opdscreen.cc , YEAR( FROM_DAYS( DATEDIFF( NOW( ) , patient.birthday ) ) ) as Age
FROM er_regist INNER JOIN
  er_dch_type ON er_dch_type.er_dch_type = er_regist.er_dch_type INNER JOIN
  vn_stat ON vn_stat.vn = er_regist.vn INNER JOIN
  patient ON vn_stat.hn = patient.hn INNER JOIN
  opdscreen ON opdscreen.vn = er_regist.vn
GROUP BY vn_stat.vn, patient.pname, patient.fname, patient.lname,
  patient.birthday, patient.informaddr, er_regist.er_pt_type, opdscreen.cc
HAVING er_regist.er_pt_type = 5
ระวังเรื่อง "อายุ" นิดหนึ่งครับ
ควรใช้อายุ ณ วันที่มารับการรักษาครับ
อาจใช้ GetThaiAge ใน report designer แทนก็ได้ครับ