ผู้เขียน หัวข้อ: ขอคำแนะนำหน่อยครับ SQL  (อ่าน 19930 ครั้ง)

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

ออฟไลน์ apatnon86

  • Sr. Member
  • ****
  • กระทู้: 410
  • Respect: 0
    • ดูรายละเอียด
ขอคำแนะนำหน่อยครับ SQL
« เมื่อ: เมษายน 02, 2014, 14:32:36 PM »
0
     คือผมต้องการข้อมูลครั้งล่าสุด record นั้นทั้ง record  ของคนไข้ที่มี  pdx=I10  เพราะบางคนเขามามากว่า 1 ครั้ง ในช่วงเวลาที่กำหนด  แต่ต้องการครั้งหลังสุด  ยกตัวอย่างตามรูป ต้องการข้อมูลที่ทำสีเขียวใว้
ต้องเขียนคำสั่งอย่างไรครับ  ขอบคุณครับ

select *
from vn_stat
where vstdate between "2014-01-01" and "2014-03-31"
      and pdx="I10"
order by hn


 

ออฟไลน์ usa0823

  • Hero Member
  • *****
  • กระทู้: 773
  • Respect: +9
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #1 เมื่อ: เมษายน 02, 2014, 16:47:27 PM »
0
ลองดูนะ...

select min(vstdate),a.*
from vn_stat a
where vstdate between "2014-01-01" and "2014-03-31"
      and pdx="I10"
group by hn
order by hn
***************************************
นายศรัญญู  ชูเมือง
จพ.เภสัชกรรมชำนาญงาน
ดูแลระบบ โรงพยาบาลลานสกา
E-mail  Sarunyu0823@hotmail.com
..............................................................................
** HOSxP ver. 3.56.11.19d
** MySQL 5.6.17
** Activated 2560

ออฟไลน์ snhosxp

  • Full Member
  • ***
  • กระทู้: 123
  • Respect: 0
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #2 เมื่อ: เมษายน 02, 2014, 22:26:26 PM »
0
ทำไมต้องเป็น min ไม่ใช้ max เหรอ
 

ออฟไลน์ usa0823

  • Hero Member
  • *****
  • กระทู้: 773
  • Respect: +9
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #3 เมื่อ: เมษายน 03, 2014, 08:53:07 AM »
0
ทำไมต้องเป็น min ไม่ใช้ max เหรอ

ใช่ครับ จะรีบกลับบ้าน 5555 ;D
ขอโทษด้วยครับ
***************************************
นายศรัญญู  ชูเมือง
จพ.เภสัชกรรมชำนาญงาน
ดูแลระบบ โรงพยาบาลลานสกา
E-mail  Sarunyu0823@hotmail.com
..............................................................................
** HOSxP ver. 3.56.11.19d
** MySQL 5.6.17
** Activated 2560

ออฟไลน์ apatnon86

  • Sr. Member
  • ****
  • กระทู้: 410
  • Respect: 0
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #4 เมื่อ: เมษายน 03, 2014, 13:48:56 PM »
0
ลองดูนะ...

select min(vstdate),a.*
from vn_stat a
where vstdate between "2014-01-01" and "2014-03-31"
      and pdx="I10"
group by hn
order by hn

     ไม่ตรงตามความต้องการครับ จากคำสั่งด้านบน (เปลี่ยน min เป็น max) มันจะดึงมาเฉพาะ วันที่รับริการครั้ง ล่าสุดมา แต่ a.* จะดึง visit แรกของคนนั้นมาครับ อย่างเช่นผู้ป่วยมารับบริการทุกวัน วันที่ 1-5 จากคำสั่งด้านบน จะดึง visit ของวันที่ 1 มาแสดง แต่ผมต้องการ visit ครั้งล่าสุด คือ วันที่ 5 ครับ
 

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 414
  • Respect: +12
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #5 เมื่อ: เมษายน 03, 2014, 13:53:37 PM »
0
select v.*
from (select max(vn) vn
from vn_stat
where vstdate between "2014-01-01" and "2014-03-31"
and pdx="I10"
group by hn
order by hn) a
left join vn_stat v on a.vn=v.vn
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ apatnon86

  • Sr. Member
  • ****
  • กระทู้: 410
  • Respect: 0
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #6 เมื่อ: เมษายน 03, 2014, 14:02:44 PM »
0
select v.*
from (select max(vn) vn
from vn_stat
where vstdate between "2014-01-01" and "2014-03-31"
and pdx="I10"
group by hn
order by hn) a
left join vn_stat v on a.vn=v.vn

   Error ครับ  คำสั่งด้านบน
 

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 414
  • Respect: +12
    • ดูรายละเอียด
Re: ขอคำแนะนำหน่อยครับ SQL
« ตอบกลับ #7 เมื่อ: เมษายน 03, 2014, 15:49:55 PM »
0
select v.*
from (select max(vn) vn
from vn_stat
where vstdate between "2014-01-01" and "2014-03-31"
and pdx="I10"
group by hn
order by hn) as a
left join vn_stat v on a.vn=v.vn
*****
เป้นที่ version ของ mysql
ผมติด..ไม่ค่อยใส่ as
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง