ผู้เขียน หัวข้อ: sql วันละคำ กับ perjer  (อ่าน 80122 ครั้ง)

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

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
sql วันละคำ กับ perjer
« เมื่อ: ธันวาคม 12, 2007, 12:05:28 PM »
+1
;D ;D MySql วันละคำ กับ perjer  ;D ;D

ของผมจะเป็นการสอนการใช้แต่ถ้านำไปใช้จิรงก็ประยุกเอานะครับ และไม่ต้องแปลกใจกับ as dd นะครับ ผมแค่เอาค่าที่ได้ไปเก็บในตัวแปล dd เท่านั้นครับ หากมีผิดพลาดประการใดก็แนะนำด้วยครับ

อ้างอิงจาก http://dev.mysql.com/doc/ ครับส่นใจเข้าไปโหลดอ่านได้ครับ

// Mysql 5.0 ขึ้นไปนะครับ เพราะส่วนใหญ่ใช้ version 5 กันนะครับ ส่วนที่ตำกว่านี้ก็สามารถถามมาได้ครับ แล้วผมจะตอบให้ครับ

คำสั่ง if เงื่อนไข ครับ

          select if ("a"="a",1,2) as dd ผลที่ได้ก็คือ 1 ครับ เพราะ a มันเท่ากับ a ก็จะเอา 1 มาแสดงครับ
          select if ("a"="b",1,2) as dd ผลที่ได้ก็คือ 2 ครับ เพราะ a มันไม่เท่ากับ b ก็จะเอา 2 มาแสดงครับ

คำสั่ง substring การตัดตัวอักษร  ครับ

          select substring("123456789",1,5) as dd ค่าที่ได้คือ 12345 เพราะการผมตัดโดยกำหนดตำแหน่งที่ 1 ถึง 5 ครับ
     
         substring_index("1234516789","1",2) as dd ค่าที่ได้ก็คือ 123451 เป็นการตัดโดยใช้การหาตำแหน่งตัวอักษรครับ จากคำสั่งนี้หมายถึง เอาตัวอักษรตังแต่เริ่มจนถึง 1 ตัวที่ จะเห็นว่ามีเลขหนึ่งสองตัวแต่
         substring_index("1234516789","1",-1) as dd ค่าที่ได้คือ 16789 ครับต่างกันที่จุดเริ่มต้นอยู่ด้วยขวาครับ

คำสั่ง  UPPER ทำตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่         
         SELECT UPPER("perjerไทย") as dd จะได้เป็น PERJERไทย ครับภาษาไทยไม่เปลี่ยนอะครับไม่ต้องกลัว

คำสั่ง REPLACE แทนที่ตัวอักษรด้วยค่าที่ต้องการครับ

         SELECT REPLACE("123456789", "56", "M") as dd ค่าที่ได้คือ 1234M789 ครับ เพราะผมแทนที่ 56 ด้วย M ครับ

คำสั่ง TIMESTAMPDIFF หาค่าความต่างของ เดือน กะ ปี ครับ
         
         SELECT TIMESTAMPDIFF(MONTH,"2003-02-01","2003-05-01") as dd ค่าที่ได้คือ 3 ครับเพราะเดือน ห่างกัน 3 ครับ
         
         SELECT TIMESTAMPDIFF(YEAR,"2001-01-01","2002-01-01") as dd ค่าที่ได้คือ 1 ครับ เพราะห่างกันหนึ่งปี

         SELECT TIMESTAMPDIFF(day,"2001-01-01","2002-01-01") as dd ค่าที่ได้คือ  365 เพราะต่างกัน 1 เท่ากับ 365 วันไงละครับ

         แตแค่นี้หลายคนก็คงยังมีคำถามในใจอีกว่าแล้วจะหาได้ วัน ที่ย้อนหลัง จากวันที่เรากำหนดได้เปล่า เช่น จะหาย้อนไป 28 วันของวันที่ 1/12/2550 ว่าเป็นวันที่เท่าไหรอะครับ นี้เลยครับคำสั่ง
         
         SELECT FROM_DAYS(TO_DAYS("2007-12-01")-28) as dd ค่าที่ได้คือ 3/11/2550 นี่คือคำตอบ อิอิ

หรือ วันใช้ SELECT SUBDATE('1998-01-02', INTERVAL 28 day) as dd ผลที่ได้ก็คือ 2007-11-03 มีค่าเท่ากัน อิอิฃ
       เดือนใช้ SELECT SUBDATE("2007-12-01", INTERVAL 1 MONTH) as dd ผลที่ได้คือ 2007-11-01
       ถ้าปีก็ SELECT SUBDATE("2007-12-01", INTERVAL 1 year) as dd ผลที่ได้คือ 2006-12-01 แค่นี้ครับ


;D ;D การใช้งาน Report Designer ครับ  ;D ;D

หัวข้อแรกขอกล่าวถึง Variable ก่อนเลยครับ

เราสามารถเขียนคำสั่งและใช้ function ต่างๆได้เหมือนกันครับ เริ่มกันเลย นะครับ

1. เราสามารถปิดการแสดงของ  Lable , Dbtext   และตัวอื่นๆ รวมทั้งตัวมันเองด้วยครับ ตัวอย่างเช่น
     หากมี Dbtext ที่มีค่าของ รหัสบัตรประจำตัวประชาชน ที่นี้ผมต้องการ ที่จะปิดตัว DbText กับ Lable ถ้าเลขบัตรเท่ากับ 1-1111-11111-11-1
ผมก็เขียนใน Varialeble ตัวหนึ่งดังนี้ ครับ
   if (DBPipeline['mon'] = '1-1111-11111-11-1') then
   begin
      DbText1.visible := false;
      Lable1.visible := false;
   end else
   begin
      DbText1.visible := true;
      Lable1.visible := true;
   end;
หลักการก็ง่ายนิดเดียวครับ ชื่อของตัวที่เราต้องการปิด แล้วก็ .visible := จริง หรือ เท็จ

2. เราสามารถเอาค่าในตัวต่างๆ ออกมาบวกกันใน Variable เช่น ผมจะเขียน code ใน variable1 โดยเอาค่าจาก variable2 กับ variable3  มาบวกกัน แล้วแสดงใน variable1
   ผมก็เข้าไปเขียนใน variable1 ดังนี้ครับ
   value := variable2.value + variable3.value;
   เป็นอันเสร็จสิ้นครับ
อีกอย่างที่อยากบอกวิธีใช้มันนั่นคือ memo ครับ หลายคนอาจอยากรู้ว่าใช้ยังไง เราก็สามารถเขียนใน variable ตัวหนึ่งเพื่อให้ค่าไปออกใน memo
   เช่นผมเขียนใน variable1 ว่า
   memo1.text := '12345678'; นี่คือวิธีการเอาค่าใส่ลงใน memo ง่ายไหมครับ

// 14/12/2550
             
ในการใช้ concat หากมี ฟิลด์ ไหนเกิดเป็นค่า Null ก็จะไม่มีค่าอะไรเกิดขึ้นเลย เช่น

SELECT CONCAT('My', NULL, 'QL')  ผลที่ได้คือ null ไม่มีอะไรออกมาครับ ดังนั้นวิธิแก้ครับผมยกตัวอย่าง patient ในการรวมชื่อนะครับ
select concat(if(pname is null,'',pname),if(fname is null,'',fname),if(lname is null,'',lname)) as full_name from patient

แค่นี้อะครับก็ OK วันนี้แค่นี้ก่อนนะครับ



   


  ใน Report Designer จจะมี function ที่ชือว่า GetPickupList(); หลายคนอาจเคยใช้ แต่หลายคนก็ยังใช้ไม่ค่อยเป็นวันนี้ วิธีใช้มาฝากครับ

ผมประกาศ ตัวแปลตัวหนึ่งขึ้นชื่อว่า pttype เป็น string ครับ จากนั้นก็เริ่มกันเลยครับ

ผมเขียนในส่วนของ Events นะครับ

pttype := GetPickupList('select "ALL" as name union select name from pttype '); // อาจจะมีคำถามถามว่า แล้ว Union นี้คืออะไร มันก็คือการเอา คำว่า ALL ไปรวมอยู่กับการเลือกสิทธิไงครับ ต่อเลยนะครับ

จากนั้นก็ต่อด้วย

if (pttype='') or (pttype='ALL') then
    begin
       pttype := '';
    end else
    begin
       pttype :=  GetSQLStringData('select pttype from pttype where name="'+pttype+'" ');
       pttype := ' pttype="'+pttype+'"';
    end;

เป็นการเทียบค่าที่ เลือกจาก function ข้างบนครับว่าเข้าเลือก ALL หรือค่าว่าง (คือไม่ได้เลือกนั่นเอง) ถ้าเลือกALL หรือค่าว่าง (คือไม่ได้เลือกนั่นเอง) pttype เท่ากับค่าว่าง แต่ถ้าเลือกสิทธิอื่นก็จะมาทำข้างล้างครับ

ตัวอย่างบรรทัด pttype := ' pttype="'+pttype+'"'; จะได้ pttype มีค่าเท่ากับ ' pttype="เลขสิทธิที่เลือก" ครับ

จากนั้นก็ใช้นี่เลยครับ function ChangeReportSQL(); //

ChangeReportSQL('select * from vn_stat '+
    '  where  '+pttype+' '+
    '    group by vn order by vstdate ');

แค่นี้เราก็จะได้รายงานที่สามารถเลือกสิทธิของผู้ป่วยได้แล้วครับว่าจะดูผู้ป่วยทุกสิทธิ หรือ เฉพาะสิทธิที่เราเลือก อิอิ


ลองดูนะครับไม่ได้ก็ถามมาครับ จะได้เป็น เทพ Admin
   








 ;D :D ไม่จำเป็นต้องเก่งขอเพียงแค่ขยัน  :D ;D


« แก้ไขครั้งสุดท้าย: พฤษภาคม 30, 2015, 14:35:15 PM โดย admin »
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: sql วันละคำ กับ perjer
« ตอบกลับ #1 เมื่อ: ธันวาคม 12, 2007, 13:59:10 PM »
0
;D ;D ผมขอใช้ หัวขอนี้เป็นที่รวบรวม คำถาม  คำตอบ และ คำแนะนำ เกียวกับ sql กับการใช้งาน Report Designer ของโปรแกรม HOSxP ครับ ไม่ว่าจะเป็น การใช้ Variable การออกแบบ Report การใช้คำสั่ง Sql และ Delphi เล็กๆน้อยๆ นะครับ ไว้ให้สำหรับผู้ที่ส่นใจ อยาก Up ตัวเองขึ้น ไม่ใช่ด้วยความเก่งแต่เป็นความขยัน  ;D ;D

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

ออฟไลน์ nuttavut

  • Hero Member
  • *****
  • กระทู้: 2,634
  • Boom-Beam
  • Respect: +15
    • ดูรายละเอียด
    • โรงพยาบาลวิเชียรบุรี
Re: sql วันละคำ กับ perjer
« ตอบกลับ #2 เมื่อ: ธันวาคม 12, 2007, 15:53:56 PM »
0
ขอบคุณครับ.... ;D ;D จะได้เอาไปประยุกต์ใช้.. :D
..Wichianburi Hospital  Phetchabun ..
Mr.Nuttavut   System Admin,Programer
Master:: HP DL380 G7 RAM 24GB Raid5 CentOS5.2  Percona 5.1.45
Slave::HP ProLiant ML150G3 Xeon Raid1  CentOS5.2   ,Percona 5.1.45
HOSxP 3.55.7.14, LIS (iLab),PACS
Tel. 0-5692-8169 ต่อ 180  | รพ. ขนาด 150+ เตียง |17 สอ. HOSxP_PCU |BMS Datacenter 18 node |
WWW : http://wichianhos.thaieasydns.com
|..ดูแลห่วงใย ใส่ใจบริการ รักษาได้มาตรฐาน พัฒนางานสู่ความเป็นเลิศ ..|   PDS Project  |  การนำเข้า Script คลิก

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: sql วันละคำ กับ perjer
« ตอบกลับ #3 เมื่อ: ธันวาคม 12, 2007, 20:03:22 PM »
0
;D ;D ขอบคุณที่เขามาอ่านครับคุณ nuttavut  ;D ;D

มีอีกอย่างที่อยากบอกเป็นของฝากนักกอร์ฟแล้วกัน
คือ นั่นคือ "" กับ null   (ค่าว่าง กับ null) สองอันนี้ต้องขอบอกว่ามันต่างกันอะครับ อย่างเช่น
 select count(*) from from ovst where doctor = "" อาจจะได้ค่าไม่เท่ากับ
 select count(*) from from ovst where doctor is null นะจะบอกให้


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

ออฟไลน์ อู๋kokha50

  • Hero Member
  • *****
  • กระทู้: 1,169
  • อยากได้ความรู้Hosxpต้องลงมือเรียนรู้
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #4 เมื่อ: ธันวาคม 13, 2007, 08:28:41 AM »
0
ขอขอบคุณ คุณPERJER4675 มากๆ ครับที่ ให้โอกาส admin มือใหม่ที่กำลังพึ่งก้าวเข้าสู่วงการ HosXp
จะได้มีพื้นที่ เรียนรู้ด้วยตนเองสำหรับคนที่ขยันและไม่มีโอกาสไปเข้าห้องเรียนอบรม ครับ
ขอสนับสนุนความรู้สาธารณะที่เป็นวิทยาทาน ยิ่งให้ผู้อื่นมากตนก็ยิ่งได้รับความรู้กลับคืนมากด้วย ครับ
โรงพยาบาลเกาะคา จังหวัดลำปาง โทร 054281393 ต่อ 128 Server : HP Proliant ML150 G3 Xeon 2.0 Ram 16 G  HDDSATA 160 G 2 ตัว CentOS 5.2 Linux MySQL 5.1.30-4percona
HosXp Version 3.55.5.8b
Client : winXP,  Version 3.55.5.8b
 ขึ้นระบบ 1 พ.ค.50

ออฟไลน์ maaeda

  • Full Member
  • ***
  • กระทู้: 220
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #5 เมื่อ: ธันวาคม 13, 2007, 08:45:40 AM »
0
ดีใจจัง มีคนเข้าใจมือใหม่   ;D ;D  ต่อไปคงจะมาขอคำปรึกษา คุณ perjer รบกวนตอบข้อสงสัยด้วยครับ  และผู้รู้ท่านอื่น ๆ ด้วย :-* :-* :-*
ROI-ET HOSPITAL :ADMIN  7 กันยายน 2550

สิ่งที่น่าเศร้าในชีวิต   คือการพบคนที่มีความหมายอย่างมาก....สำหรับเรา  
แต่มาค้นพบภายหลังว่า   เราไม่ได้ถูกกำหนดมาเพื่อสิ่งนั้น....และจะต้องปล่อยให้ผ่านพ้นไป

ออฟไลน์ chinaga

  • Hero Member
  • *****
  • กระทู้: 715
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #6 เมื่อ: ธันวาคม 13, 2007, 08:51:56 AM »
0
ขอบคุณมากครับจะนำไปศึกษาดูครับคงได้สอบถามเพิ่มเติมเยอะเลยครับ
โรงพยาบาลสังขะ สุรินทร์ IBM X3650 Ram 20 G Centos 5.3 Mysql 5.1.47 XtraDB  hosxp 3.55.2.6
user คือผู้เป็นใหญ่ในระบบ
http://www.surinadmin.com/

ออฟไลน์ woravet

  • Sr. Member
  • ****
  • กระทู้: 414
  • Respect: +12
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #7 เมื่อ: ธันวาคม 13, 2007, 12:31:47 PM »
0
น่าจะมีบอกไว้เกี่ยวกับบางคำสั่ง เพราะใช้ต่าง version กัน
เช่น timestampdiff ใช้ใน MySQL 5 ขึ้นไป
เพราะของผมยังใช้ 4 อยู่เลยใช้ไม่ได้
*****
ผมไม่แน่ใจว่า from_days กับ to_days เป็น store procedures รึปล่าว
เห็นมีอยู่หลายตัวเหมือนกันใน HOSxP
รพ.บึงสามัคคี จ.กำแพงเพชร
*********************
อ.สุชัยและคณะ ขึ้นระบบ 29 ตค.49(Linux+Fedara 5)
*********************
ปัจจุบัน
HOSxP version 3.53.4.27
Server:Windows XP SP2,MySQL 5
Client ประมาณ 15 เครื่อง

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: sql วันละคำ กับ perjer
« ตอบกลับ #8 เมื่อ: ธันวาคม 13, 2007, 14:01:36 PM »
0
น่าจะมีบอกไว้เกี่ยวกับบางคำสั่ง เพราะใช้ต่าง version กัน
เช่น timestampdiff ใช้ใน MySQL 5 ขึ้นไป
เพราะของผมยังใช้ 4 อยู่เลยใช้ไม่ได้
*****
ผมไม่แน่ใจว่า from_days กับ to_days เป็น store procedures รึปล่าว
เห็นมีอยู่หลายตัวเหมือนกันใน HOSxP

ผมต้องขอบอกว่าเป็น Mysql 5.0 ขึ้นไปอะครับ ส่วน 4 ก็สามารถเข้ามาถามได้ครับ

ส่วน from_days กับ to_days ไม่ใช่ store procedures แต่เป็น Function เกียวกับ Date อะครับ

สามารถดูได้ในส่วนของหัวข้อ

12.5. Datums- und Zeitfunktionen

ถ้าภาษาอังกฤษ ก็หัวข้อ 10.6. Date and Time Functions

« แก้ไขครั้งสุดท้าย: ธันวาคม 13, 2007, 14:23:34 PM โดย perjer4675 »
ชื่อ นาย เกรียงไกร  ทาฤทธิ์
โรงพยาบาลสมุทรปราการ
ยังไม่ได้ทำอย่าบอกว่า ทำไม่ได้
mail perjer4675[at]hotmail.com
เว็บส่วนตัว www.perjer.net

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: sql วันละคำ กับ perjer
« ตอบกลับ #9 เมื่อ: ธันวาคม 13, 2007, 18:43:57 PM »
+1
;D ;D ใน Report Designer จจะมี function ที่ชือว่า GetPickupList(); หลายคนอาจเคยใช้ แต่หลายคนก็ยังใช้ไม่ค่อยเป็นวันนี้ วิธีใช้มาฝากครับ

ผมประกาศ ตัวแปลตัวหนึ่งขึ้นชื่อว่า pttype เป็น string ครับ จากนั้นก็เริ่มกันเลยครับ

ผมเขียนในส่วนของ Events นะครับ

pttype := GetPickupList('select "ALL" as name union select name from pttype '); // อาจจะมีคำถามถามว่า แล้ว Union นี้คืออะไร มันก็คือการเอา คำว่า ALL ไปรวมอยู่กับการเลือกสิทธิไงครับ ต่อเลยนะครับ

จากนั้นก็ต่อด้วย

if (pttype='') or (pttype='ALL') then
    begin
       pttype := '';
    end else
    begin
       pttype :=  GetSQLStringData('select pttype from pttype where name="'+pttype+'" ');
       pttype := ' pttype="'+pttype+'"';
    end;

เป็นการเทียบค่าที่ เลือกจาก function ข้างบนครับว่าเข้าเลือก ALL หรือค่าว่าง (คือไม่ได้เลือกนั่นเอง) ถ้าเลือกALL หรือค่าว่าง (คือไม่ได้เลือกนั่นเอง) pttype เท่ากับค่าว่าง แต่ถ้าเลือกสิทธิอื่นก็จะมาทำข้างล้างครับ

ตัวอย่างบรรทัด pttype := ' pttype="'+pttype+'"'; จะได้ pttype มีค่าเท่ากับ ' pttype="เลขสิทธิที่เลือก" ครับ

จากนั้นก็ใช้นี่เลยครับ function ChangeReportSQL(); //

ChangeReportSQL('select * from vn_stat '+
    '  where  '+pttype+' '+
    '    group by vn order by vstdate ');

แค่นี้เราก็จะได้รายงานที่สามารถเลือกสิทธิของผู้ป่วยได้แล้วครับว่าจะดูผู้ป่วยทุกสิทธิ หรือ เฉพาะสิทธิที่เราเลือก อิอิ



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

ออฟไลน์ thannawe

  • Hero Member
  • *****
  • กระทู้: 2,904
  • Respect: +8
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #10 เมื่อ: ธันวาคม 13, 2007, 21:40:34 PM »
0
กระทู้นี้เป็นประโยชน์มากมายมหาศาลเลยครับท่าน
ขอขอบพระคุณครับ  ;D
กิจจา ชาญธัญกรรม
นักวิชาการคอมพิวเตอร์ชำนาญการ รพ.โพธาราม จ.ราชบุรี
็HOSxP XE

doramon

  • บุคคลทั่วไป
Re: sql วันละคำ กับ perjer
« ตอบกลับ #11 เมื่อ: ธันวาคม 13, 2007, 21:40:50 PM »
0
ทำเป็นหนังสือเลย
 ;D

ออฟไลน์ perjer4675

  • Full Member
  • ***
  • กระทู้: 221
  • ไม่มีใครรู้ใจเราเท่ากับเรารู้ใจตัวเอง
  • Respect: +2
    • ดูรายละเอียด
    • ไทย - เพ้อเจ้อ
Re: sql วันละคำ กับ perjer
« ตอบกลับ #12 เมื่อ: ธันวาคม 14, 2007, 10:39:20 AM »
0
;D ;D หนังสือคงไม่อะครับ เพราะอยากให้มาแลกเปลี่ยนความรู้ กันในเว็บครับ  ;D ;D

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

ออฟไลน์ nuttavut

  • Hero Member
  • *****
  • กระทู้: 2,634
  • Boom-Beam
  • Respect: +15
    • ดูรายละเอียด
    • โรงพยาบาลวิเชียรบุรี
Re: sql วันละคำ กับ perjer
« ตอบกลับ #13 เมื่อ: ธันวาคม 14, 2007, 11:36:35 AM »
0
ดีครับ...ขอบคุณมากๆ เวลาลืมจะได้มาคนหาได้ที่นี่
..Wichianburi Hospital  Phetchabun ..
Mr.Nuttavut   System Admin,Programer
Master:: HP DL380 G7 RAM 24GB Raid5 CentOS5.2  Percona 5.1.45
Slave::HP ProLiant ML150G3 Xeon Raid1  CentOS5.2   ,Percona 5.1.45
HOSxP 3.55.7.14, LIS (iLab),PACS
Tel. 0-5692-8169 ต่อ 180  | รพ. ขนาด 150+ เตียง |17 สอ. HOSxP_PCU |BMS Datacenter 18 node |
WWW : http://wichianhos.thaieasydns.com
|..ดูแลห่วงใย ใส่ใจบริการ รักษาได้มาตรฐาน พัฒนางานสู่ความเป็นเลิศ ..|   PDS Project  |  การนำเข้า Script คลิก

ออฟไลน์ SrWooD

  • Hero Member
  • *****
  • กระทู้: 1,024
  • Respect: +1
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #14 เมื่อ: ธันวาคม 14, 2007, 11:39:50 AM »
0
รบกวนตรวจสอบ sql ให้ด้วยครับ

เอาไว้เช็ค HN ที่ข้ามครับ

โค๊ด: SQL
  1. SET @x='0000000';
  2. SELECT v.xhn,b.hn
  3. FROM (SELECT RIGHT(concat('000000',@x:=@x+1),7) AS xhn FROM patient a) AS v
  4. LEFT OUTER JOIN patient b ON v.xhn=b.hn
  5. HAVING b.hn IS NULL
  6. LIMIT 10
  7.  

ว่าทำไมมันช้าครับ กำหนด limit ที่น้อยก่อนนะครับ ขอบอก แล้วใช้ hn 7 หลักนะครับ

ที่ผมทดสอบในเครื่องทดสอบออกนะครับ ตอนแรกนึกว่าเครื่อง hang ครับ

แล้วจะปรับอย่างไรได้บ้างครับ

รบกวนผู้รู้ทุกท่านด้วยครับ
โรงพยาบาลโพธิ์ทอง จังหวัดอ่างทอง

ออฟไลน์ Baannork

  • Newbie
  • *
  • กระทู้: 1
  • Do U beleive in destiny คุณเชื่อในพรหมลิขิตหรือไม่
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #15 เมื่อ: ธันวาคม 25, 2007, 20:29:57 PM »
0
เทสๆ แหะๆ
~ วิ่ ง สู้ ฟั ด ~ วิ่ ง ต า ม ห า รั ก แ ท้

เมื่อไม่ได้พัฒนาที่จิตใจ จะพัฒนาด้านใดๆก็ไร้ผล การพัฒนาจึงต้องเริ่มที่ใจคน เพื่อเกิดผลพัฒนาที่ถาวร

ออฟไลน์ naydekdee

  • Hero Member
  • *****
  • กระทู้: 704
  • naydekdee
  • Respect: +1
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #16 เมื่อ: กันยายน 30, 2009, 23:17:53 PM »
0
ขอบคุณระคับ
UP systems on Hospital  2010-03-01
(นายเด็กดี)  รพช.บางกระทุ่ม พิษณุโลก
Structure Version  HOSxP 3.61.9.25b

ออฟไลน์ atit

  • Hero Member
  • *****
  • กระทู้: 1,233
  • ขออภัย ความรู้ไม่มาก
  • Respect: +3
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #17 เมื่อ: ตุลาคม 30, 2009, 16:17:57 PM »
0
procedure Label3OnPrint;
begin
      label3.visible:= DBPipeline['pttype'] = (10,20,23,50)  ;
end;

ตัวนี้ต้องแก้อย่างไรครับ ;D
"-"           รู้อะไรไม่สู้รู้วิชา รู้จักหาในบอร์ดเป็นยอดคน                   tel 081-3202497 
ความรู้เพียงเล็กน้อย อาจช่วยคนเป็นร้อยแก้ปัญหา
เพราะฉะนั้น อย่ากลัวที่จะบอกสิ่งที่คุณรู้กับคนอื่น แม้จะเป็นเรื่องพื้นๆ ก็ตาม
cen-os 64 bit ,ram 4 g ,my sql 5.1.33
วิธีแนะนำตัวเอง  http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4413.0
ก่อนตั้งกระทู้ใหม่ ลองหาดูกระทู่เก่าก่อนดีบ่? อาจได้คำตอบเร็วกว่าเด้อ   http://hosxp.net/index.php?option=com_smf&Itemid=28&action=search
วิธีขอบคุณผู้ที่ตอบคำถามถูกใจ   http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=8180.0
การเปิดใช้ Server แยก เก็บรูปภาพ/log http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=10169.0
การติดตั้ง mysql http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=11513.0
sql วันละคำกับคุณperjer http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4007.0
8)ยินดีต้อนรับสู่สังคมแห่งการแบ่งปัน- การแบ่งปันทำให้สังคมน่าอยู่- ;Dขอขอบคุณ
- อ.mn ผู้เขียนโปรแกรมดีๆและช่วยขึ้นระบบ
- อ.อ๊อด,อ.นาจ,อ.ขวด,อ.โก้,อ.nutawut,อ.ตั๊ก,อ.JD,อ.กิจ...ที่คอยช่วยเหลือและให้ความรู้
- ทุกท่านที่ช่วย review โปรแกรมทำให้เราได้ใช้โปรแกรมที่สุดยอด(อยากให้เป็นโปรแกรมระดับประเทศเร็วๆจังจะได้ไม่ต้องง้อ สปสช 5555 :D)

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #18 เมื่อ: ตุลาคม 31, 2009, 14:31:27 PM »
0
ดันครับ แวะเข้ามาอ่านบ่อยและก็จะถามบ่อยด้วย อิิิอิ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ armds

  • Hero Member
  • *****
  • กระทู้: 1,084
  • armds
  • Respect: +10
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #19 เมื่อ: ตุลาคม 31, 2009, 15:00:12 PM »
+1
ลองดูแบบนี้ดูครับ

procedure Label3OnPrint;
begin
    test := '20';
    case strtoint(test) of
      10 : label3.visible := true;
      20 : label3.visible := true;
      25 : label3.visible := true;
      30 : label3.visible := true;
      40 : label3.visible := false;
      end;

end;
โรงพยาบาลสมเด็จพระยุพราชด่านซ้าย จ.เลย
ขนาด 60 เตียง นวก. คอมพิวเตอร์ ขึ้นระบบ ปี 2548
ขอบคุณ อ.ชัยพร อ.สุชัย อ.เดชา อ.doreamon อ.naj อ.ขวด และอ.ในเว็บ hosxp.net ทุกท่าน

ออฟไลน์ atit

  • Hero Member
  • *****
  • กระทู้: 1,233
  • ขออภัย ความรู้ไม่มาก
  • Respect: +3
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #20 เมื่อ: พฤศจิกายน 02, 2009, 16:05:42 PM »
0
ขอบคุณครับพี่อาร์ม คิดถึง select case เหมือนกันแต่ไม่แน่ใจเรื่องรูปแบบคำสั่งครับ ;D

สรุปแล้วเป็นแบบนี้ครับ

procedure Label3OnPrint;
begin
     test := DBPipeline['pttype'];
    case strtoint(test) of
      10 : label3.visible := true;
      20 : label3.visible := true;
      25 : label3.visible := true;
      30 : label3.visible := true;
    else
      label3.visible := false;
    end;
end;
« แก้ไขครั้งสุดท้าย: พฤศจิกายน 02, 2009, 19:57:17 PM โดย atit »
"-"           รู้อะไรไม่สู้รู้วิชา รู้จักหาในบอร์ดเป็นยอดคน                   tel 081-3202497 
ความรู้เพียงเล็กน้อย อาจช่วยคนเป็นร้อยแก้ปัญหา
เพราะฉะนั้น อย่ากลัวที่จะบอกสิ่งที่คุณรู้กับคนอื่น แม้จะเป็นเรื่องพื้นๆ ก็ตาม
cen-os 64 bit ,ram 4 g ,my sql 5.1.33
วิธีแนะนำตัวเอง  http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4413.0
ก่อนตั้งกระทู้ใหม่ ลองหาดูกระทู่เก่าก่อนดีบ่? อาจได้คำตอบเร็วกว่าเด้อ   http://hosxp.net/index.php?option=com_smf&Itemid=28&action=search
วิธีขอบคุณผู้ที่ตอบคำถามถูกใจ   http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=8180.0
การเปิดใช้ Server แยก เก็บรูปภาพ/log http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=10169.0
การติดตั้ง mysql http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=11513.0
sql วันละคำกับคุณperjer http://hosxp.net/index.php?option=com_smf&Itemid=28&topic=4007.0
8)ยินดีต้อนรับสู่สังคมแห่งการแบ่งปัน- การแบ่งปันทำให้สังคมน่าอยู่- ;Dขอขอบคุณ
- อ.mn ผู้เขียนโปรแกรมดีๆและช่วยขึ้นระบบ
- อ.อ๊อด,อ.นาจ,อ.ขวด,อ.โก้,อ.nutawut,อ.ตั๊ก,อ.JD,อ.กิจ...ที่คอยช่วยเหลือและให้ความรู้
- ทุกท่านที่ช่วย review โปรแกรมทำให้เราได้ใช้โปรแกรมที่สุดยอด(อยากให้เป็นโปรแกรมระดับประเทศเร็วๆจังจะได้ไม่ต้องง้อ สปสช 5555 :D)

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #21 เมื่อ: ธันวาคม 08, 2009, 23:26:53 PM »
0
อยากทราบคำสั่งเกี่ยวกับ การ update ครับ ผมอยากจะ update field cid ของ patient ครับโดยดึงข้อมูลจาก hipdata ครับไม่ทราบ syืtax ครับผม
ช่วยหน่อยครับผม

update patient  set patient.cid=(hipdata.cid) from hipdata inner join patient on patient.fname=hipdata.fname where patient.lname=hipdata.lname and patient.birthday=hipdata.birthdate
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ snhos

  • Sr. Member
  • ****
  • กระทู้: 373
  • ฉันยังรู้สึกว่าตัวเองยังเด็กในการทำงานและความรู้
  • Respect: +3
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #22 เมื่อ: ธันวาคม 09, 2009, 11:13:03 AM »
0
ขอแนะนำก่อนน่ะครับว่า การอัพเดทตามคำสั่งที่ส่งมามันมีเงื่อนไขที่เขาไม่นิยมทำกันเพราะ อ้างเอาชื่อนามสกุล วันเดือนปีเกิดที่เหมือนกัน  เป็นเป็นเงื่อนไขที่แปรปรวนง่าย  เช่น นายกันต์ มาดี (อยู่ใน patient) นายกัน มาดี (มีอยู่ใน Hipdata)ถึงแม้จะเป็นคนเดียวกัน แต่ข้อมูลมันไม่เท่ากันมันจะอัพเดทไม่ได้
สู้เรากรอกข้อมูลผ่าน patient (หน้างานห้องบัตรให้ถูกต้องทีสุดดีกว่า)
แต่ถ้าจะทำ ควรอัพเดทฟิลอื่นดีกว่า เช่น อัพเดท สิทธิ์ติดตัวที่ตาราง patient ให้เป็นเหมือนตาราง hipdata ดีกว่า
เวลาส่งตรวจจะได้ไม่ต้องกังวลค่อยตรวจสอบจาก hipdata
ของเดิม
update patient  set patient.cid=(hipdata.cid) from hipdata inner join patient on patient.fname=hipdata.fname where patient.lname=hipdata.lname and patient.birthday=hipdata.birthdate

น่าจะแก้เป็น (ลองถามท่านอื่นดูด้วยน่ะครับ) เป็นการอัพเดทสิทธิ์ ตัวอย่าง
UPDATE patient p inner join hipdata h ON h.cid=p.cid SET p.pttype=h.pttype; เป็นต้น
น่าจะเกิดประโยชน์มากกว่า

ปล.
1 บางครั้ง cid ที่ได้จาก สปสช. ก็อาจไม่ถูกเสมอไป  ผมเคยตรวจพบเจอ  บางรายมี cid 2 รายการ 
2 ก่อนจำ run คำสั่งที่เกี่ยวกับ update  หรือ insert หรือ delete ควร backup ตาราง หรือ ฐานข้อมูลไว้ก่อน ปลอดภัยทีสุด
« แก้ไขครั้งสุดท้าย: ธันวาคม 09, 2009, 11:25:26 AM โดย snhos »
โรงพยาบาลไทรน้อย นนทบุรี 60 เตียง
เริ่มระบบ 2551 ขอบคุณอาจารย์หมาน้อย คุณหนุ่ม (รพ.ปากเกร็ด),อ.อ๊อด อ.นาจ และท่านปราชญ์ทุกท่าน ผู้เป็นอาจารย์และคนช่วยเหลือ
Master:IBM Xeon QuardCore X3650 M2 CPU 2.0 ram 28 g
OS:CentOS 6.4
Percona:5.5.33  
hosxp:3.56.9.30

Slave:IBM Xeon QuardCore E5405 CPU 2.0 ram 6 g
OS:CentOS 6.4
Percona:5.5.33  
hosxp:3.56.9.30

LIS LAB
Pfsense Log

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #23 เมื่อ: ธันวาคม 11, 2009, 10:31:28 AM »
0
หลังจาก update จาก hipdata แล้ว ก็ upใน ptcardno ด้วยครับ Cradit by PERJER ครับ
update ptcardno pc,patient p
set pc.cardno=concat(substring(p.cid,1,1),"-",substring(p.cid,2,4),"-",
substring(p.cid,6,5),"-",substring(p.cid,11,2),"-",substring(p.cid,13,1))
where p.hn=pc.hn
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ saiphon

  • Sr. Member
  • ****
  • กระทู้: 431
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #24 เมื่อ: กุมภาพันธ์ 02, 2010, 22:42:51 PM »
0
ช่วย..แบ่งปันความรู้ครับ..เยี่ยมๆๆๆๆ
Admin Amnatcharoen
Server HP ProLiant ML350 G6  2.8 GHz Ram 12 GB
CentOS 5.3 , MYSQL 5.1.30 64bit จำนวน 2 เครื่อง
Server HP ProLiant ML350 G6  2.8 GHz Ram 8 GB
Windows Server 2003 , MYSQL 5.1.30 64bit จำนวน 1 เครื่อง
ขึ้นระบบ HOSxP PCU เมื่อ 1 เม.ย.52
ขึ้นระบบ Datacenter เมื่อ 15 มิ.ย.52 โดย อ.MN

ออฟไลน์ onlinelp

  • Full Member
  • ***
  • กระทู้: 163
  • Respect: 0
    • ดูรายละเอียด
    • โรงพยาบาลพระนารายณ์มหาราช
Re: sql วันละคำ กับ perjer
« ตอบกลับ #25 เมื่อ: พฤษภาคม 04, 2010, 22:08:10 PM »
0
 ::) ::)
สงสัยต้องเริ่มอ่านใหม่อีกรอบแล้วครับ
ไม่ทราบมาก่อนเลยครับว่ามีกระทู้นี้อยู่
เมื่อก่อนผมศึกษาจาก code เก่าๆที่อยู่ใน Report Designer
แล้วเอามาปะติดปะต่อเอาเอง ปัจจุบันก็พอไปได้แบบงูไหลตามน้ำอะน่ะครับ :-* :-*
โรงพยาบาลพระนารายณ์มหาราช จ.ลพบุรี
HOSxp Version : 3.53.12.8
สำรวย  ช้างจวง (ต๊อก)
MSN : aminoaul@hotmail.com
------------------------------------------------------------------------
KSK Kill >>sality.a  http://www.webphand.com/sality/fix.php

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #26 เมื่อ: กันยายน 03, 2010, 11:58:07 AM »
0
ถาม sql เกี่ยวกับ group by หน่อยพอดีว่าผมต้องการค่า น้ำหนักล่าสุดของ แต่ละ Hn ผม

select hn,bw,vn from opdscreen where bw<>"0" group by hn,vn desc

มันเลือก vn น้อยมาครับ เห็นว่า group by กับ order by ใช้ด้วยกันไม่ได้ทำไงดีครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ redfireball

  • Full Member
  • ***
  • กระทู้: 219
  • คุณแม่ขอร้อง..ร้อง....
  • Respect: +4
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #27 เมื่อ: กันยายน 03, 2010, 14:09:26 PM »
0
ถาม sql เกี่ยวกับ group by หน่อยพอดีว่าผมต้องการค่า น้ำหนักล่าสุดของ แต่ละ Hn ผม

select hn,bw,vn from opdscreen where bw<>"0" group by hn,vn desc

มันเลือก vn น้อยมาครับ เห็นว่า group by กับ order by ใช้ด้วยกันไม่ได้ทำไงดีครับ

set @dt1 := '2010-01-01';
set @dt2 := '2010-01-31';

SELECT p.hn,concat(pname,p.fname,space(2),p.lname) as ptnames,max(v.vstdate) as visitdate_now,
(select case when o1.bw is null or o1.bw = 0 then "N/A" else o1.bw end from opdscreen o1 where o1.hn = v.hn and o1.vstdate between @dt1 and @dt2 order by o1.vstdate desc limit 1) as bw_now
from vn_stat v
inner join opdscreen o on  o.vn = v.vn
left join patient p on p.hn = v.hn
where v.vstdate between @dt1 and @dt2
group by v.hn

ลองดูครับ  ;) ;)
« แก้ไขครั้งสุดท้าย: กันยายน 03, 2010, 14:17:04 PM โดย redfireball »
โรงพยาบาลสังคม
SANGKHOM HOSPITAL
30 เตียง อ.สังคม จ.หนองคาย
http://www.sangkhomhospital.com
ขึ้นระบบ 5 ธ.ค. 51

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #28 เมื่อ: กันยายน 07, 2010, 12:23:00 PM »
0
(select case when o1.bw is null or o1.bw = 0 then "N/A" else o1.bw end from opdscreen o1 where o1.hn = v.hn and o1.vstdate between @dt1 and @dt2 order by o1.vstdate desc limit 1) จาก script นี้
ให้เลือก น้ำหนัก vn ล่าสุดมาใช่มั้ยครับแล้วถ้า vn ล่าสุดไม่ได้ใส่น้ำหนักมาแต่ก่อนหน้าไปอีก visit เค้าใส่น้ำหนักมาทำไงครับตอนนี้ผมทำได้ประมาณนี้นะครับ แต่จริงๆอยากให้อยู่columเดียวกันเลย

sELECT p.hn,concat(pname,p.fname,space(2),p.lname) as ptnames,max(v.vstdate) as visitdate_now,
(select case when o1.bw is null or o1.bw = 0 then "N/A" else o1.bw end from opdscreen o1 where o1.hn = v.hn and o1.vstdate between "2010-01-01" and "2010-03-01"  order by o1.vstdate desc limit 1) as bw_now
,(select case when o1.bw is null or o1.bw = 0 then "N/A" else o1.bw end from opdscreen o1 where o1.hn = v.hn and o1.vstdate between "2010-01-01" and "2010-03-01"   order by o1.vstdate desc limit 1,1) as bw_now2
,(select case when o1.bw is null or o1.bw = 0 then "N/A" else o1.bw end from opdscreen o1 where o1.hn = v.hn and o1.vstdate between "2010-01-01" and "2010-03-01"   order by o1.vstdate desc limit 2,1) as bw_no
from vn_stat v
inner join opdscreen o on  o.vn = v.vn
left join patient p on p.hn = v.hn
where v.vstdate between "2010-01-01" and "2010-03-01"
group by v.hn
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ redfireball

  • Full Member
  • ***
  • กระทู้: 219
  • คุณแม่ขอร้อง..ร้อง....
  • Respect: +4
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #29 เมื่อ: กันยายน 08, 2010, 00:01:45 AM »
0
set @dt1 := '2010-01-01';
set @dt2 := '2010-01-31';

SELECT p.hn,concat(pname,p.fname,space(2),p.lname) as ptnames,max(v.vstdate) as "วันที่มาล่าสุด",
(select o1.vstdate from opdscreen o1 where o1.hn = v.hn and DATEDIFF(o1.vstdate,@dt2) <= 0 and (o1.bw is not null or o1.bw <> 0) order by o1.vstdate desc limit 1) as "วันที่มีค่าน้ำหนัก",
(select o1.bw from opdscreen o1 where o1.hn = v.hn and DATEDIFF(o1.vstdate,@dt2) <= 0 and (o1.bw is not null and o1.bw <> 0) order by o1.vstdate desc limit 1) as "น้ำหนัก"
from vn_stat v
inner join opdscreen o on  o.vn = v.vn
left join patient p on p.hn = v.hn
where v.vstdate between @dt1 and @dt2
group by v.hn

เอาวันที่ลงค่าน้ำหนักล่าสุด ที่ไม่เกินวันที่เลือก @dt2 ประมาณนี้ ได้ไมครับ  :) :)
« แก้ไขครั้งสุดท้าย: กันยายน 08, 2010, 00:09:04 AM โดย redfireball »
โรงพยาบาลสังคม
SANGKHOM HOSPITAL
30 เตียง อ.สังคม จ.หนองคาย
http://www.sangkhomhospital.com
ขึ้นระบบ 5 ธ.ค. 51

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #30 เมื่อ: กันยายน 08, 2010, 09:03:43 AM »
0
datediff ช่วยยังไงหรอครับผมไม่ทราบจริงๆ ครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #31 เมื่อ: กันยายน 08, 2010, 09:13:52 AM »
0
ใช้ได้ครับสุดยอดมากๆเลย แต่อยากใช้ datediff คือ ? ใช้ยังไง อ่านแล้วไม่เข้าใจครับ
โค๊ด: XML
  1.  
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ redfireball

  • Full Member
  • ***
  • กระทู้: 219
  • คุณแม่ขอร้อง..ร้อง....
  • Respect: +4
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #32 เมื่อ: กันยายน 08, 2010, 10:02:56 AM »
+1
ใช้ได้ครับสุดยอดมากๆเลย แต่อยากใช้ datediff คือ ? ใช้ยังไง อ่านแล้วไม่เข้าใจครับ
โค๊ด: XML
  1.  
ครับ datediff คือคำสั่งสำหรับหา "ผลต่าง" ของ "วันที่" 2 ค่า ครับ
ยังไงลองใช้ดูครับ ไม่เข้าใจคำสั่งไหน ยินดีให้คำปรึกษาครับ หรือจะศึกษาเพิ่มเติมได้ที่ mysql ได้ที่
http://www.java2s.com/Tutorial/MySQL/CatalogMySQL.htm ผมลืมคำสั่งไหน ก็เข้าเว็บนี้ครับ  :) :) :)
กับ http://www.w3schools.com/ เว็บนี้รวมหลายๆอย่างไว้ ดีมากครับ  :) :) ผมเข้าประจำ
โรงพยาบาลสังคม
SANGKHOM HOSPITAL
30 เตียง อ.สังคม จ.หนองคาย
http://www.sangkhomhospital.com
ขึ้นระบบ 5 ธ.ค. 51

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,357
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: sql วันละคำ กับ perjer
« ตอบกลับ #33 เมื่อ: กันยายน 08, 2010, 15:21:08 PM »
+1
ดูตัวอย่างจากรายงานนี้ครับ
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #34 เมื่อ: ตุลาคม 14, 2010, 09:50:38 AM »
0
มีคำถามอีกครับ คือผมจะเลือกผู้ป่วยที่ยังไม่ตายนะครับหรือถ้าตายก็ตายหลังจากวันที่ที่กำหนดเขียนงี้ถูกมั้ยครับ

(p.death<>"Y" and p.deathday is null  or p.deathday>"2009-10-01") ผมงงกับวงเล็บอะไม่รู้ใส่ถูกป่าว

*******************

select count(distinct(o.hn)) as d from ovstdiag o ,patient p
where o.hn=p.hn  and o.icd10 between "e10" and "e109" and (p.death<>"Y" and p.deathday is null  or p.deathday>"2009-10-01")
and o.vstdate<"2009-10-01"

Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #35 เมื่อ: ตุลาคม 14, 2010, 12:03:43 PM »
0
มีเงื่อนไขเพิ่มครับรายเก่าต้องมารับบริการ 2 ครั้งขึ้นไป ผมเลยเพิ่มเป็น

having count(o.vn)>2

*****************

select  count(distinct(o.hn))
from ovstdiag o ,patient p
where o.hn=p.hn  and o.icd10 between "e10" and "e109"
and (p.death<>"Y" and deathday is null or deathday>="2009-10-01")  and o.vstdate<"2009-10-01"   having count(o.vn)>2

แต่มันนับ o.vn ทั้งหมดครับมันไม่ได้นับราย hn ผมเลยไม่รู้จะเขียนไงโดยต้องการให้ออกแต่ยอดนะครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #36 เมื่อ: ตุลาคม 14, 2010, 16:00:34 PM »
0
ลองอันนี้ก็ค้างคับ

select count(distinct(o.hn)) as d
from ovstdiag o ,patient p
where o.hn=p.hn  and o.icd10 between "e110" and "e119"
and(p.death<>"Y" and p.deathday is null or p.deathday>"2009-10-01")
and o.vstdate<"2009-10-01"
and o.hn in (select ov.hn from ovstdiag ov
where ov.icd10 between "e110" and "e119"
and ov.vstdate<"'+ds1+'" group by ov.hn having count(ov.vn)>2
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #37 เมื่อ: ตุลาคม 14, 2010, 17:36:59 PM »
0
อยากถามเกี่ยวกับการการแปลงวันที่ครับ สมมุติว่าเราทำรายงานปีงบประมาณ แล้วเราเลือกวันที่มาเป็น 2009-10-01 ซึ่งมันเป็น ปีงบ 53 ผมจะแปลงไงหรอครับผม ตอนนี้ใน variable ผมทำแบบนี้นะครับ

  Value := GetSQLStringData('select timestampdiff(year,"1956-10-01","'+ds1+'") ');

มันจะลบกันได้ 53 พอดีอะครับ อยู่ได้อีกประมาณ 47 ปี อิอิ  แต่ได้การจัดการเกี่ยวกับวันที่แบบเทห์อะแบบว่า เอาปีที่เลือกแล้ว + อีก 1 อะครับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ pop_hosxp

  • Hero Member
  • *****
  • กระทู้: 3,138
  • Respect: +40
    • ดูรายละเอียด
    • Phanomphrai Hospital
Re: sql วันละคำ กับ perjer
« ตอบกลับ #38 เมื่อ: ตุลาคม 14, 2010, 17:46:37 PM »
0
อยากถามเกี่ยวกับการการแปลงวันที่ครับ สมมุติว่าเราทำรายงานปีงบประมาณ แล้วเราเลือกวันที่มาเป็น 2009-10-01 ซึ่งมันเป็น ปีงบ 53 ผมจะแปลงไงหรอครับผม ตอนนี้ใน variable ผมทำแบบนี้นะครับ

  Value := GetSQLStringData('select timestampdiff(year,"1956-10-01","'+ds1+'") ');

มันจะลบกันได้ 53 พอดีอะครับ อยู่ได้อีกประมาณ 47 ปี อิอิ  แต่ได้การจัดการเกี่ยวกับวันที่แบบเทห์อะแบบว่า เอาปีที่เลือกแล้ว + อีก 1 อะครับ

ลอง apply โดยใช้ตาราง stock_bdg_year สิครับ
pop434241@gmail.com
รพ.พนมไพร จ.ร้อยเอ็ด https://pnphos.moph.go.th/hosweb/

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,357
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: sql วันละคำ กับ perjer
« ตอบกลับ #39 เมื่อ: ตุลาคม 14, 2010, 17:59:18 PM »
0
ลองดูตัวอย่างนี้ครับ
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #40 เมื่อ: ตุลาคม 14, 2010, 19:08:48 PM »
0
ขอบคุณ pop_hosxp และ ท่าน udomchok มากครับผม
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ udomchok

  • Hero Member
  • *****
  • กระทู้: 8,357
  • Respect: +589
    • ดูรายละเอียด
    • ร.พ.สมเด็จพระสังฆราช องค์ที่ 17
Re: sql วันละคำ กับ perjer
« ตอบกลับ #41 เมื่อ: ตุลาคม 14, 2010, 23:15:51 PM »
0
กด Thanks  ก็ดีนะครับ  :D :D :D
ทำด้วยหัวใจร.พ.สมเด็จพระสังฆราช องค์ที่ 17 อ.สองพี่น้อง จ.สุพรรณบุรี
อบรมโดย BMS Team เมื่อ พ.ย. 49 ขึ้นระบบห้องบัตรเมื่อ X'Mas 2007
2008 : X-Ray กายภาพบำบัด แพทย์แผนไทย กิจกรรมบำบัด OPD ตา
2009 : ทันตกรรม ห้องตรวจตา OPD (พยาบาลและห้องตรวจแพทย์บางห้อง)

ออฟไลน์ SIWIT

  • Sr. Member
  • ****
  • กระทู้: 359
  • ฉันไม่เคยคิดยอม แต่ขอเวลาหน่อย
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #42 เมื่อ: ตุลาคม 14, 2010, 23:21:13 PM »
0
เรียบร้อยคับ
Siwit : นวก.คอม รพช.ปักธงชัย
Server : Xeon 2.0 ; Ram: 12Gb: OS: FreeBSD 8.1
Database : mysql 5.1.47
Slave : P4 3.4 Gb; Ram: 2 Gb; OS: FreeBSD 8.0 ; Database: mysql 5.1.47
Client : windows xp sp3 ; Software : Hosxp version 3.53.8.4
ขึ้นระบบวันที่ 1 มีนาคม 2552 ขอบคุณ อ.ทุกๆท่านครับ

ออฟไลน์ bughumnoy

  • Newbie
  • *
  • กระทู้: 1
  • Respect: 0
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #43 เมื่อ: กรกฎาคม 07, 2011, 10:10:30 AM »
0
ขอบคุณครับ ;D
 

ออฟไลน์ บิ๊กเบิร์ด

  • Full Member
  • ***
  • กระทู้: 203
  • ศรัทธา
  • Respect: +11
    • ดูรายละเอียด
    • http://lo.moph.go.th
Re: sql วันละคำ กับ perjer
« ตอบกลับ #44 เมื่อ: สิงหาคม 29, 2012, 10:34:38 AM »
0
สอบถามท่านผู้เชี่ยวทั้งหลายครับ ถ้าผมต้องการเขียนตรวจสอบ type_area ว่า

ถ้า type_area มีค่าน้อยกว่า 4

ให้แสดงค่าดังกล่าวออกมา แต่ให้เป็นตัวอักษรสีแดง

ถ้าไม่ใช่ ให้แสดงค่า DBpipeline_Type_Area ออกมา

ผมทำได้ดังนี้

   if (DBPipeline['type_area'] < 4 )  then
      begin
        value:='DBPipeline['type_area']';
      end
     else
      begin
        value:= DBPipeline['type_area'];
      end;

แต่ติดตรองเงื่อนไขแรกครับ อยากให้เป็นตัวอักษรสีแดงครับ

รบกวนด้วยนะครับ  ขอบคุณ ล่วงหน้าครับ
กัมปนาท  บุตรจันทร์  (bigbird)
นวก.คอมพิวเตอร์ @สสจ.เลย
mybigbird1983@gmail.com
blog : http://bigbird1983.blogspot.com/
---------------------------------------------------
วิธีใส่ลายเซ็น เพื่อแนะนำตัวเอง

ขอบคุณ ที่ก

ออฟไลน์ BBT Hospital

  • Jr. Member
  • **
  • กระทู้: 61
  • Respect: +2
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #45 เมื่อ: ธันวาคม 03, 2012, 06:35:23 AM »
0
ลองดูนะครับ สมมุติว่าตัวแปรที่ใช้ชื่อ Variable10

สอบถามท่านผู้เชี่ยวทั้งหลายครับ ถ้าผมต้องการเขียนตรวจสอบ type_area ว่า

ถ้า type_area มีค่าน้อยกว่า 4

ให้แสดงค่าดังกล่าวออกมา แต่ให้เป็นตัวอักษรสีแดง

ถ้าไม่ใช่ ให้แสดงค่า DBpipeline_Type_Area ออกมา

ผมทำได้ดังนี้

   if (DBPipeline['type_area'] < 4 )  then
      begin
        value:='DBPipeline['type_area']';
     Variable10.Font.color:=ClRed;      end
     else
      begin
        value:= DBPipeline['type_area'];
     Variable10.Font.color:=ClBlack;     
      end;

แต่ติดตรองเงื่อนไขแรกครับ อยากให้เป็นตัวอักษรสีแดงครับ

รบกวนด้วยนะครับ  ขอบคุณ ล่วงหน้าครับ
แพทย์ โรงพยาบาลบางบัวทอง
Linux server Cent-OS 5 -ram 4 GB
HosXP when 2550
ตัวเองเริ่มใช้ July 2551
Server version: 3.55.11.8
Client version:HOSxP 3.55.2.29  (Most)
                      3.55.7.14(Ward)
การขึ้นระบบโดย : ทีม BMS
การทำ Report + SQL => นั่งเทียนมั่วเอง + copy ของ อาจารย์ ทั้งหลายครับ
** ขอบคุณ ทุกท่านที่เอื้อเฟื้อครับ **
(update signature when 56-01-24)

ออฟไลน์ k_toedkiets

  • Hero Member
  • *****
  • กระทู้: 853
  • Respect: +2
    • ดูรายละเอียด
Re: sql วันละคำ กับ perjer
« ตอบกลับ #46 เมื่อ: ธันวาคม 03, 2012, 08:19:45 AM »
0
มีหนังสือแนะนำเกี่ยวกับหารใช้คำสั่ง mysql บ้างไหมครับ อ.ทั้งหลาย....Admin มือใหม่กำลังหัดเดินครับ...
Khaibangrachan Hospital
HOSXP : 3.58.2.12
Activation HOSxP 2015
----------------