ผู้เขียน หัวข้อ: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)  (อ่าน 12087 ครั้ง)

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

ออฟไลน์ nan_it

  • Hero Member
  • *****
  • กระทู้: 578
  • หัวไม่ให้แต่ใจรัก ( อยากเก่งให้มากกว่านี้ )
  • Respect: 0
    • ดูรายละเอียด
    • ramanhospital
0
select pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) as patient_name,pt.moopart,thd.full_name ,ov.hn,ov.pdx ,i.name
from vn_stat ov ,patient pt ,ovst ovst
left outer join icd101 i on i.code = ov.pdx
left outer join thaiaddress thd on thd.addressid = ov.aid
where  ov.vn=ovst.vn and pt.hn=ov.hn and ov.vstdate between "2007-03-01" and "2007-03-01"
 and ov.age_y>= 0
 and ov.age_y<= 200
 and ovst.main_dep="010"
 and ovst.visit_type = "o"
Mr.Anannee Sama ,โรงพยาบาลรามัน อำเภอรามัน จังหวัดยะลา 95140 ( รพ.60 เตียง กำลังจะเป็น รพ.ทั่วไป ครับ)
e-mail : nan_it@hotmail.com
http://www.ramanhospital.com
Server Intel Ram 16 G 
OS CentOS Database Mysql percona xtradb
ขึ้นระบบ กรกฎาคม พ.ศ. 2547
เวอร์ชั่นที่ใช้ 3.54.10.31

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #1 เมื่อ: กันยายน 04, 2007, 14:46:31 PM »
0
โค๊ด: SQL
  1. SELECT pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) AS patient_name,pt.moopart,thd.full_name ,ov.hn,ov.pdx ,i.name
  2. FROM vn_stat ov
  3. LEFT OUTER JOIN patient pt ON ov.hn=pt.hn
  4. LEFT OUTER JOIN ovst ovst ON ovst.vn=ov.vn
  5. LEFT OUTER JOIN icd101 i ON i.code = ov.pdx
  6. LEFT OUTER JOIN thaiaddress thd ON thd.addressid = ov.aid
  7. WHERE  ov.vn=ovst.vn AND pt.hn=ov.hn AND ov.vstdate BETWEEN "2007-03-01" AND "2007-03-01"
  8.  AND ov.age_y>= 0
  9.  AND ov.age_y<= 200
  10.  AND ovst.main_dep="010"
  11.  AND ovst.visit_type = "o"
Yindee And Tan

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #2 เมื่อ: กันยายน 04, 2007, 15:00:48 PM »
0
select pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) as patient_name,pt.moopart
,ov.hn,ov.pdx ,i.name ,thd.full_name
from vn_stat ov ,patient pt ,ovst ovst, thaiaddress thd,
icd101 i

where ov.vn=ovst.vn and pt.hn=ov.hn and thd.addressid = ov.aid
and i.code = ov.pdx and ov.vstdate between "2007-03-01" and "2007-03-01"
 and ov.age_y >= 0
 and ov.age_y <= 200
 and ovst.main_dep="010"
 and ovst.visit_type = "o"


 ;D ;D ผมไม่รู้ว่าพี่ต้องการข้อมูลเป็นยังไงแต่ผมแก้ให้ไม่ ERROR แล้วละ COPY ไปลองดูละกัน
« แก้ไขครั้งสุดท้าย: กันยายน 04, 2007, 15:13:21 PM โดย perjer4675 »
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #3 เมื่อ: กันยายน 04, 2007, 15:14:17 PM »
0
select pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) as patient_name,pt.moopart,thd.full_name ,ov.hn,ov.pdx ,i.name
from vn_stat ov ,patient pt ,ovst ovst
left outer join icd101 i on i.code = ov.pdx
left outer join thaiaddress thd on thd.addressid = ov.aid
where  ov.vn=ovst.vn and pt.hn=ov.hn and ov.vstdate between "2007-03-01" and "2007-03-01"
 and ov.age_y>= 0
 and ov.age_y<= 200
 and ovst.main_dep="010"
 and ovst.visit_type = "o"

..คำสั่งลักษณะนี้ คือ เลือกมาจากหลายตาราง(from vn_stat ov ,patient pt ,ovst ovst) แล้วสั่ง join ร่วมด้วย ถ้าเป็น MySQL 4.x.xx จะสามารถ run ได้  แต่ถ้าเป็น MySQL 5.0.xx  จะไม่สามารถ run คำสั่งได้ ต้องใช้แบบที่ อ.นาจ แนะนำไว้   ถือว่าปกติใช่ใหมครับ รบกวนผู้รู้ซักกะนิดนะครับ.. :D...
« แก้ไขครั้งสุดท้าย: กันยายน 04, 2007, 15:20:39 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

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #4 เมื่อ: กันยายน 04, 2007, 15:18:35 PM »
0
select pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) as patient_name,pt.moopart
,ov.hn,ov.pdx ,i.name ,thd.full_name
from vn_stat ov ,patient pt ,ovst ovst, thaiaddress thd,
icd101 i

where ov.vn=ovst.vn and pt.hn=ov.hn and thd.addressid = ov.aid
and i.code = ov.pdx and ov.vstdate between "2007-03-01" and "2007-03-01"
 and ov.age_y >= 0
 and ov.age_y <= 200
 and ovst.main_dep="010"
 and ovst.visit_type = "o"

;D ;D ขอโทษครับเมื่อกี้ copy ผิดอันนะไป copy อันเดิมให้เฉยเลย  :o :o
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ SrWooD

  • Hero Member
  • *****
  • กระทู้: 1,024
  • Respect: +1
    • ดูรายละเอียด
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #5 เมื่อ: กันยายน 04, 2007, 15:26:41 PM »
0
ผมลองใน MySQL 5 ก็ััยังไ้ด้อยู่ครับ

เพียงแต่ลองเปลี่ยนตอน join ครับ

select pt.hn,concat(pt.pname,pt.fname,"  ",pt.lname) as patient_name,pt.moopart,thd.full_name ,ov.hn,ov.pdx ,i.name
from patient pt ,ovst ovst, vn_stat ov
left outer join icd101 i on i.code = ov.pdx
left outer join thaiaddress thd on thd.addressid = ov.aid
where  ov.vn=ovst.vn and pt.hn=ov.hn and ov.vstdate between "2007-03-01" and "2007-03-01"
 and ov.age_y>= 0
 and ov.age_y<= 200
 and ovst.main_dep="010"
 and ovst.visit_type = "o"

ลองดูครับ

แต่เรื่องหลักการของ MySQL 4 กะ 5 ไม่ทราบครับ
โรงพยาบาลโพธิ์ทอง จังหวัดอ่างทอง

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #6 เมื่อ: กันยายน 04, 2007, 15:33:48 PM »
0
...ขอบคุณท่าน srwood ที่ช่วยส่องไฟฉายให้ครับ ..ขอบคุณ..ขอบคุณ.. ;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

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #7 เมื่อ: กันยายน 04, 2007, 15:37:45 PM »
0
 ;D ;D ไม่หลอกครับ Mysql 5 ก็ต้องรองรับ Mysql 4 อยู่อะครับ หลักการก็ไม่ต่างกันแต่เพิ่มความสามารถของ
ให้ Mysql 5  มากขึ้นอีกทั้งการเพิ่มความสามารถเรื่อง trigger อะครับ  ;D ;D
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ เข็มหล่อ

  • Jr. Member
  • **
  • กระทู้: 77
  • Respect: 0
    • ดูรายละเอียด
    • WWW.BANGKOK8.NET
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #8 เมื่อ: กันยายน 04, 2007, 15:43:46 PM »
0
ใช่แล้วครับ 4 กะ 5 ไม่ต่างกันหรอก
สักเกตุนิดนึงนะครับ

from patient pt ,ovst ovst, vn_stat ov
แต่ก้อ
where  ov.vn=ovst.vn and pt.hn=ov.hn

ก้อเหมือน เอาตารางมาใช้คำสั่ง left outer join ธรรมดานี่แหละครับ
คิดเหมือนผมมั๊ยครับ
<a href="http://www.hosxp.th.gs/web-h/osxp/B8_B2.swf" target="_blank" class="new_win">http://www.hosxp.th.gs/web-h/osxp/B8_B2.swf</a>

ออฟไลน์ Khuad

  • Hero Member
  • *****
  • กระทู้: 3,778
  • .. นางฟ้า ตัวไม่น้อยแล้ว ..
  • Respect: +10
    • ดูรายละเอียด
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #9 เมื่อ: กันยายน 04, 2007, 15:53:57 PM »
0
..นั่นซิครับ  น่าจะไม่แตกต่างกัน  แต่ลองแล้ว ผลเป็นอย่างที่บอก ถ้าลองเอาคำสั่งที่คุณ nan_it  ให้ไว้ไป run ใน MySQL 4 จะ run ได้ แต่ MySQL 5 ไม่ได้ติด error อย่างที่คุณ nan_it  พบ  ..
โรงพยาบาลวังน้อย   พระนครศรีอยุธยา ( รพช.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

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #10 เมื่อ: กันยายน 04, 2007, 17:03:22 PM »
0
จริงๆต่างกันเล็กน้อยครับ
ov.vn=ovst.vn and pt.hn=ov.hn  เป็นการ join inner join ข้อเสียที่พบคือ ถ้าตารางใดตารางหนึ่งเป็นค่าว่าง record นั้นจะถูกตัดทันที่ครับ a table inner join b table ถ้า a  b มีค่าไม่ตรงตามเงื่อนไข เช่น ฟิลด์ใดฟิลด์หนึ่งเป็นค่าว่างจะทำให้ยอดรายงานผิดพลาดครับ
ส่วน left outer join จะเป็นการเชื่อมตารางโดยเอาตารางด้านซ้ายมือเป็นหลัก เช่น ตาราง a ถึงม้ว่า ฟิลด์บางฟิลด์ของ ตาราง b จะเป็น ค่าว่างก็จะแสดงตามเงื่อนไขครับ
Yindee And Tan

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #11 เมื่อ: กันยายน 04, 2007, 17:10:23 PM »
0
 ;D ;D ใช่แล้วครับคุณ naj การจะใช้ code ยังไงขึ้นอยู่กับความต้องการทางข้อมูลมากกว่าอะครับ  ;D ;D
                        ::) บางอย่างก็ควรใช้ left outer join หรือบางอย่างก็ไม่ควรใช้  ::)

ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

doramon

  • บุคคลทั่วไป
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #12 เมื่อ: กันยายน 04, 2007, 17:46:32 PM »
0
ครับ ตามที่ อ. นาจ บอกถูกต้องแล้วครับ 

คำสั่งสองอันจะมีข้อมูล ออกมาไม่เท่ากันได้ครับ
ต้องระวังการใช้ให้ดีครับ

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #13 เมื่อ: กันยายน 04, 2007, 20:05:14 PM »
0
ความรู้ที่ได้ก็มาจาก คำแนะนำของ อ.อ๊อด อีกทีครับ :D
Yindee And Tan

ออฟไลน์ SrWooD

  • Hero Member
  • *****
  • กระทู้: 1,024
  • Respect: +1
    • ดูรายละเอียด
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #14 เมื่อ: กันยายน 04, 2007, 23:35:42 PM »
0
เพิ่งสังเกตุครับ

ของ อ.นาจ มีระบบ lab automate แล้ว

ว่างๆ จะไปเยี่ยมชมครับ
โรงพยาบาลโพธิ์ทอง จังหวัดอ่างทอง

ออฟไลน์ naj

  • Hero Member
  • *****
  • กระทู้: 2,449
  • Respect: +10
    • ดูรายละเอียด
    • http://www.luangphopern-hospital.com
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #15 เมื่อ: กันยายน 05, 2007, 06:35:06 AM »
0
 lab automate ยังไม่เสร็จครับ ต้องแก้ไขอีกหลายจุดครับ
Yindee And Tan

ออฟไลน์ nan_it

  • Hero Member
  • *****
  • กระทู้: 578
  • หัวไม่ให้แต่ใจรัก ( อยากเก่งให้มากกว่านี้ )
  • Respect: 0
    • ดูรายละเอียด
    • ramanhospital
Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
« ตอบกลับ #16 เมื่อ: กันยายน 05, 2007, 08:42:12 AM »
0
ขอบคุณมากครับ ได้ความรู้มากเลยครับ
Mr.Anannee Sama ,โรงพยาบาลรามัน อำเภอรามัน จังหวัดยะลา 95140 ( รพ.60 เตียง กำลังจะเป็น รพ.ทั่วไป ครับ)
e-mail : nan_it@hotmail.com
http://www.ramanhospital.com
Server Intel Ram 16 G 
OS CentOS Database Mysql percona xtradb
ขึ้นระบบ กรกฎาคม พ.ศ. 2547
เวอร์ชั่นที่ใช้ 3.54.10.31