การหาผลลัพท์ ในช่วงเวลาต่างๆที่ไม่ต่อเนื่อง
กระทู้เก่าบอร์ด อ.Yeadram

 1,053   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 จะเป็นค่าว่างครับ
                                ขอบคุณครับ

2 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R14688
หาข้อมูลจ่ายยาในวันที่อยู่ใน ward
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)
2 @R14692
ขอบคุณครับ ตอนนี้ยังทำในขั้นตอน union ไม่ออก คิดว่าน่าจะทำได้ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2951s