BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: Hos_Wang ที่ กรกฎาคม 11, 2011, 16:23:01 PM

หัวข้อ: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: Hos_Wang ที่ กรกฎาคม 11, 2011, 16:23:01 PM
ขอถามเรื่อง 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

แต่...รู้สึกว่าคนไข้มาน้อยผิดปกติ  ไม่รู้ผมพลาดตรงไหนหรือปล่าว  ขอให้ท่านผู้รู้ลองตรวจสอบให้หน่อยน่ะครับผม  หากไม่ถูกอย่างไรก็ต้องขอคำแนะนำด้วยน่ะครับ
หัวข้อ: Re: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: Khuad ที่ กรกฎาคม 11, 2011, 18:59:48 PM
ขอถามเรื่อง sql หน่อยน่ะครับ  คือผมต้องการ query คนไข้ห้องฟันที่มาใหม่ในปีครับ 
....................................................
แต่...รู้สึกว่าคนไข้มาน้อยผิดปกติ 

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

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

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

หัวข้อ: Re: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: Khuad ที่ กรกฎาคม 11, 2011, 19:00:20 PM

... ลองใช้เปลี่ยนไปใช้  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
หัวข้อ: Re: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: Khuad ที่ กรกฎาคม 11, 2011, 19:01:44 PM

... แต่ว่าการใช้ข้อมูล จากตาราง 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 ...

หัวข้อ: Re: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: Hos_Wang ที่ กรกฎาคม 11, 2011, 23:02:28 PM
ขอบคุณอ.ขวดมากน่ะคร้าบบบบบ  ได้ผลอย่างไรจะมาบอกน่ะครับ
หัวข้อ: Re: ผมต้องการ query คนไข้ห้องฟัน(ทันตกรรม)ที่มาใหม่ในปีครับ ต้องเขียนอย่างไรเอ่ยยยย
เริ่มหัวข้อโดย: cya ที่ ตุลาคม 26, 2011, 10:21:42 AM
ใน dt_list ยังมีปัญหาการนับ เหมือนที่อ.ขวดบอกค่ะ ver 3.54.9.29
รบกวนอ.mn ช่วยแก้ไขให้ด้วยนะคะ

ขอบพระคุณมากค่ะ