กระทู้เก่าบอร์ด อ.Yeadram
1,108 2
URL.หัวข้อ /
URL
การหาผลลัพท์ ในช่วงเวลาต่างๆที่ไม่ต่อเนื่อง
เรียน อจ. ทุกท่านรบกวนคำถามครับ
ผมมี file ข้อมูล อยู่ 2 file
File ที่ 1 เป็น file การสั่งใช้ยา A ของแพทย์ทุกคนใน 1 ปีที่ผ่านมา
DAY (วันทีสั่งยา) DRUG(ยา) MD(รหัสแพทย์)
เนื่องจากยา A ต้องมีการควบคุมการใช้ แพทย์ที่หมุนเวียนเข้าบางแผนกเท่านั้น จึงมีสิทธิ์สั่งใช้ได้
File ที่ 2 เป็นfile ที่กำหนดสิทธิ์แพทย์ตามช่วงเวลาต่างๆ ให้สามารถสั่งใช้ได้
MD(รหัสแพทย์) BDATE(วันที่มีสิทธิ์) EDATE(วันที่หมดสิทธิ์) WARD
พ A 1/10/2554 31/10/2554 ICU
พ A 1/12/2554 31/12/2554 NICU
พ A 13/5/2555 31/5/2555 PICU
พ B 1/1/2555 31/12/2555 ICU
เนื่องจากพบว่ามีการเงื่อนไข คือในช่วงที่ตนเองไม่มีสิทธิ์แต่ก็ยังสั่งยา
ผมจึงสร้าง QUERY มาตรวจสอบ โดยเชื่อม MD ด้วยกัน และพยายามทำทีละเดือน เช่น วันที่สั่งยา 1/10/2554 -31/10/2554 ว่ามีแพทย์ท่านไดบ้างที่ไม่มีสิทธิ์แต่สั่งยามา
SELECT Table1.DAY, Table1.DRUG, Table1.MD, Table2.BDATE, Table2.EDATE, Table2.WARD
FROM Table1 LEFT JOIN Table2 ON Table1.MD = Table2.MD
WHERE (((Table1.DAY) Between #10/1/2011# And #10/31/2011#));
ไม่ว่าผมจะใส่เงื่อนไข เวลาตรง ที่ EDATE หรือ BDATE “Between #10/1/2011# And #10/31/2011#” หลายๆวิธีแล้วปรากฎว่า rec มาไม่ครบ ลองใส่เงื่อนไขเวลาที่อื่นดู ก็กลายเป็น rec ซ้ำก็มีครับ
สิ่งที่ผมต้องคือ query ที่มี rec ทั้งหมด ของ File(TABLE)ที่ 1 โดย query นี้หากแพทย์ท่านใดมีสิทธิ์สั่งยาในช่วงเวลานั้นๆก็มีชื่อ ward อยู่ได้จาก File(TABLE)ที่ 2 หากไม่มีสิทธิ์สั่ง ward จะเป็นค่าว่างครับ
ขอบคุณครับ
ผมมี file ข้อมูล อยู่ 2 file
File ที่ 1 เป็น file การสั่งใช้ยา A ของแพทย์ทุกคนใน 1 ปีที่ผ่านมา
DAY (วันทีสั่งยา) DRUG(ยา) MD(รหัสแพทย์)
เนื่องจากยา A ต้องมีการควบคุมการใช้ แพทย์ที่หมุนเวียนเข้าบางแผนกเท่านั้น จึงมีสิทธิ์สั่งใช้ได้
File ที่ 2 เป็นfile ที่กำหนดสิทธิ์แพทย์ตามช่วงเวลาต่างๆ ให้สามารถสั่งใช้ได้
MD(รหัสแพทย์) BDATE(วันที่มีสิทธิ์) EDATE(วันที่หมดสิทธิ์) WARD
พ A 1/10/2554 31/10/2554 ICU
พ A 1/12/2554 31/12/2554 NICU
พ A 13/5/2555 31/5/2555 PICU
พ B 1/1/2555 31/12/2555 ICU
เนื่องจากพบว่ามีการเงื่อนไข คือในช่วงที่ตนเองไม่มีสิทธิ์แต่ก็ยังสั่งยา
ผมจึงสร้าง QUERY มาตรวจสอบ โดยเชื่อม MD ด้วยกัน และพยายามทำทีละเดือน เช่น วันที่สั่งยา 1/10/2554 -31/10/2554 ว่ามีแพทย์ท่านไดบ้างที่ไม่มีสิทธิ์แต่สั่งยามา
SELECT Table1.DAY, Table1.DRUG, Table1.MD, Table2.BDATE, Table2.EDATE, Table2.WARD
FROM Table1 LEFT JOIN Table2 ON Table1.MD = Table2.MD
WHERE (((Table1.DAY) Between #10/1/2011# And #10/31/2011#));
ไม่ว่าผมจะใส่เงื่อนไข เวลาตรง ที่ EDATE หรือ BDATE “Between #10/1/2011# And #10/31/2011#” หลายๆวิธีแล้วปรากฎว่า rec มาไม่ครบ ลองใส่เงื่อนไขเวลาที่อื่นดู ก็กลายเป็น rec ซ้ำก็มีครับ
สิ่งที่ผมต้องคือ query ที่มี rec ทั้งหมด ของ File(TABLE)ที่ 1 โดย query นี้หากแพทย์ท่านใดมีสิทธิ์สั่งยาในช่วงเวลานั้นๆก็มีชื่อ ward อยู่ได้จาก File(TABLE)ที่ 2 หากไม่มีสิทธิ์สั่ง ward จะเป็นค่าว่างครับ
ขอบคุณครับ
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R14692
ขอบคุณครับ ตอนนี้ยังทำในขั้นตอน union ไม่ออก คิดว่าน่าจะทำได้ครับ
Time: 0.3622s
Query1:
SELECT Table1.Day, Table1.Drug, Table1.MD, Table2.BDate, Table2.EDate, Table2.Ward
FROM Table1, Table2
WHERE (Table1.MD = Table2.MD) And (Table1.Day Between BDate And EDate)
หาข้อมูลจ่ายยาในวันที่ไม่อยู่ใน ward (ที่ไม่อยู่ใน Query1)
Query2:
SELECT Table1.Day, Table1.Drug, Table1.MD
FROM Table1
LEFT JOIN Query1
ON (Table1.MD = Query1.MD)
AND (Table1.Drug = Query1.Drug)
AND (Table1.Day = Query1.Day)
WHERE Query1.Day Is Null
เอาข้อมูลทั้ง 2 query รวมกัน
Query3:
(SELECT Day, Drug, MD, BDate, EDate, Ward
FROM Query1)
Union
(SELECT Day, Drug, MD, Null, Null, Null
FROM Query2)