BMS-HOSxP Community

HOSxP => การเขียน SQL Script => ข้อความที่เริ่มโดย: nan_it ที่ กันยายน 04, 2007, 14:32:48 PM

หัวข้อ: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 04, 2007, 14:32:48 PM
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"
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: naj ที่ กันยายน 04, 2007, 14:46:31 PM
โค๊ด: 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"
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: perjer4675 ที่ กันยายน 04, 2007, 15:00:48 PM
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 ไปลองดูละกัน
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: Khuad ที่ กันยายน 04, 2007, 15:14:17 PM
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...
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: perjer4675 ที่ กันยายน 04, 2007, 15:18:35 PM
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
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 04, 2007, 15:26:41 PM
ผมลองใน 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 ไม่ทราบครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: Khuad ที่ กันยายน 04, 2007, 15:33:48 PM
...ขอบคุณท่าน srwood ที่ช่วยส่องไฟฉายให้ครับ ..ขอบคุณ..ขอบคุณ.. ;D..
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: perjer4675 ที่ กันยายน 04, 2007, 15:37:45 PM
 ;D ;D ไม่หลอกครับ Mysql 5 ก็ต้องรองรับ Mysql 4 อยู่อะครับ หลักการก็ไม่ต่างกันแต่เพิ่มความสามารถของ
ให้ Mysql 5  มากขึ้นอีกทั้งการเพิ่มความสามารถเรื่อง trigger อะครับ  ;D ;D
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: เข็มหล่อ ที่ กันยายน 04, 2007, 15:43:46 PM
ใช่แล้วครับ 4 กะ 5 ไม่ต่างกันหรอก
สักเกตุนิดนึงนะครับ

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

ก้อเหมือน เอาตารางมาใช้คำสั่ง left outer join ธรรมดานี่แหละครับ
คิดเหมือนผมมั๊ยครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: Khuad ที่ กันยายน 04, 2007, 15:53:57 PM
..นั่นซิครับ  น่าจะไม่แตกต่างกัน  แต่ลองแล้ว ผลเป็นอย่างที่บอก ถ้าลองเอาคำสั่งที่คุณ nan_it  ให้ไว้ไป run ใน MySQL 4 จะ run ได้ แต่ MySQL 5 ไม่ได้ติด error อย่างที่คุณ nan_it  พบ  ..
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: naj ที่ กันยายน 04, 2007, 17:03:22 PM
จริงๆต่างกันเล็กน้อยครับ
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 จะเป็น ค่าว่างก็จะแสดงตามเงื่อนไขครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: perjer4675 ที่ กันยายน 04, 2007, 17:10:23 PM
 ;D ;D ใช่แล้วครับคุณ naj การจะใช้ code ยังไงขึ้นอยู่กับความต้องการทางข้อมูลมากกว่าอะครับ  ;D ;D
                        ::) บางอย่างก็ควรใช้ left outer join หรือบางอย่างก็ไม่ควรใช้  ::)

หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: doramon ที่ กันยายน 04, 2007, 17:46:32 PM
ครับ ตามที่ อ. นาจ บอกถูกต้องแล้วครับ 

คำสั่งสองอันจะมีข้อมูล ออกมาไม่เท่ากันได้ครับ
ต้องระวังการใช้ให้ดีครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: naj ที่ กันยายน 04, 2007, 20:05:14 PM
ความรู้ที่ได้ก็มาจาก คำแนะนำของ อ.อ๊อด อีกทีครับ :D
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: SrWooD ที่ กันยายน 04, 2007, 23:35:42 PM
เพิ่งสังเกตุครับ

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

ว่างๆ จะไปเยี่ยมชมครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: naj ที่ กันยายน 05, 2007, 06:35:06 AM
 lab automate ยังไม่เสร็จครับ ต้องแก้ไขอีกหลายจุดครับ
หัวข้อ: Re: ตรวจสอบคำสั่ง SQL ให้หน่อยครับ (มือใหม่)
เริ่มหัวข้อโดย: nan_it ที่ กันยายน 05, 2007, 08:42:12 AM
ขอบคุณมากครับ ได้ความรู้มากเลยครับ