ผู้เขียน หัวข้อ: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย  (อ่าน 7263 ครั้ง)

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

ออฟไลน์ Hos_Wang

  • Newbie
  • *
  • กระทู้: 37
  • Respect: +2
    • ดูรายละเอียด
ขอถามเรื่อง sql หน่อยน่ะครับ  คือผมต้องการ query คนไข้ห้องฟันที่มาใหม่ในปีครับ  ผมเขียน  script ดังนี้ครับ
SELECT * FROM dtmain d
LEFT OUTER join vn_stat v on v.vn=d.vn
WHERE d.vstdate BETWEEN "2011-05-01" and "2011-05-31"
and v.count_in_year=0
GROUP BY d.dn
ORDER BY d.vstdate

แต่...รู้สึกว่าคนไข้มาน้อยผิดปกติ  ไม่รู้ผมพลาดตรงไหนหรือปล่าว  ขอให้ท่านผู้รู้ลองตรวจสอบให้หน่อยน่ะครับผม  หากไม่ถูกอย่างไรก็ต้องขอคำแนะนำด้วยน่ะครับ
รัฐชัย  มหาสิงห์  นวก.คอมฯ โรงพยาบาลวังสะพุง  จ.เลย
Server : IBM Xeon 2.13  Ram: 8Gb: OS: CentOS 4.8
Database : mysql percona-5.1.54
Client Spec : WinXP SP3 Core2Duo 2.24 RAM 2GB
ขึ้นระบบเองเมื่อ  วันที่  1  มกราคม  2554
Hosxp Version 2.54.12.7

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
ขอถามเรื่อง sql หน่อยน่ะครับ  คือผมต้องการ query คนไข้ห้องฟันที่มาใหม่ในปีครับ 
....................................................
แต่...รู้สึกว่าคนไข้มาน้อยผิดปกติ 

... เนื่องจากไปใช้เงื่อนไขคนไข้ใหม่ในปีมาจาก vn_stat ครับ

    เพราะ vn_stat จะเก็บข้อมูลของการมารับบริการทุกแผนก ไม่ใช่เฉพาะห้องฟันครับ

    ทำให้บางครั้ง count_in_year ใน vn_stat ที่มีค่าไม่เท่ากับ 0    เช่น  count_in_year ใน vn_stat เป็น 1, 2, 3, ....    อาจเป็นคนไข้ใหม่ของห้องฟันก็ได้  ถ้าการมาในครั้งก่อนๆ เป็นการมารับบริการที่แผนกอื่น
    ที่ไม่ใช่ห้องฟันครับ ....  :D ....

« แก้ไขครั้งสุดท้าย: กรกฎาคม 11, 2011, 19:02:57 PM โดย Khuad »
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด

... ลองใช้เปลี่ยนไปใช้  count_in_year = 0 จากตาราง dt_list แทนนะครับ ...  :D ....

select * from dtmain d1
left outer join dt_list d2 on d2.vn = d1.vn
where d1.vstdate between '2011-05-01' and '2011-05-31'
and d2.count_in_year = 0
group by d1.dn
order by d1.vstdate
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด

... แต่ว่าการใช้ข้อมูล จากตาราง dt_list  มีข้อต้องระวังนะครับ

   คือ ข้อมูลที่สามารถนำมาใช้ได้อย่างถูกต้องของ count_in_year ,count_in_month, count_in_day  คือข้อมูลที่มีค่า เท่ากับ 0 หรือครั้งใหม่ เท่านั้นครับ 
    ถ้าค่าที่มากกว่า 0  อาจเป็นข้อมูลที่ไม่ถูกต้องก็ได้ครับ

    เนื่องจากผมคิดว่า อ.mn คงใช้คำสั่งนับ vn ก่อนหน้าเหมือนกับที่ใช้เก็บข้อมูลใน vn_stat ครับ  ซึ่งตาราง vn_stat นั้น  ใน 1 vn จะมีอยู่แค่ record เดียว ทำให้นับได้ถูกต้อง ไม่เป็นปัญหาอะไร

    แต่ในตาราง dt_list  น่าจะนับ vn ก่อนหน้ามาจากตาราง dtmain ครับ 
    ซึ่งในตาราง dtmain ใน 1 vn อาจจะมีข้อมูลอยู่หลาย record ได้ถ้ามีการทำหัตถการมากกว่า 1 รายการ 
    กรณีนี้ จะทำให้ข้อมูลใน count_in_year ,count_in_month, count_in_day ของตาราง dt_list  ผิดพลาดครับ เพราะจะเท่ากับ record ทุก record ของ HN นี้ที่มาก่อนหน้า 

    คิดว่า อ.mn คงจะลืม group by vn น่ะครับ ...  :D ...


...  ถือโอกาสนี้ ฝาก อ.mn ช่วยแก้ไขตาราง dt_list ให้ด้วยเลยนะครับผม ....  :D  :D ...

โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.30 เตียง )
Server : ProLiant DL120G6  Xeon X3450  RDIMM 12 Gb  2x256GB SSD Raid 1
OS : CentOS 6.3  DB : Percona 5.5.21

Slave : ProLiant ML110G6  Xeon X3430  UDIMM 8 Gb  2x300GB SAS Raid 1
OS : CentOS 6.3  DB : Percona 5.5.32

HOSxP version  3.57.xx.xx    เริ่มระบบ  เมษายน 2549

ออฟไลน์ Hos_Wang

  • Newbie
  • *
  • กระทู้: 37
  • Respect: +2
    • ดูรายละเอียด
ขอบคุณอ.ขวดมากน่ะคร้าบบบบบ  ได้ผลอย่างไรจะมาบอกน่ะครับ
รัฐชัย  มหาสิงห์  นวก.คอมฯ โรงพยาบาลวังสะพุง  จ.เลย
Server : IBM Xeon 2.13  Ram: 8Gb: OS: CentOS 4.8
Database : mysql percona-5.1.54
Client Spec : WinXP SP3 Core2Duo 2.24 RAM 2GB
ขึ้นระบบเองเมื่อ  วันที่  1  มกราคม  2554
Hosxp Version 2.54.12.7

ออฟไลน์ cya

  • Full Member
  • ***
  • กระทู้: 121
  • Respect: 0
    • ดูรายละเอียด
ใน dt_list ยังมีปัญหาการนับ เหมือนที่อ.ขวดบอกค่ะ ver 3.54.9.29
รบกวนอ.mn ช่วยแก้ไขให้ด้วยนะคะ

ขอบพระคุณมากค่ะ
Chawang Crown Prince Hospital, Nakhonsrithammarat.