ผมลองเขียน code ดังนี้
select i.hn,i.an,concat(p.fname,' ',p.lname) as fullname,concat(p.addrpart,' ',p.moopart,' ',t.full_name) as fulladdr,io.ipt_oper_code,o.qty,o.icode,io.name,i.regdate,o.rxdate
from ipt i
left outer join patient p on p.hn=i.hn
left outer join an_stat a on a.an=i.an
left outer join opitemrece o on o.an=i.an
left outer join ipt_oper_code io on io.icode=o.icode
left outer join thaiaddress t on t.addressid=a.aid
where io.ipt_oper_code in('1','23') and o.rxdate between "2013-10-01" and "2013-10-17" and o.an is not null
order by i.an
limit 100
จาก ipt_oper_code
ipt_oper_code | icode | name
1|3000853|IV ให้สารน้ำทางหลอดเลือดดำ [เด็ก]
23|3000853|IV ให้สารน้ำทางหลอดเลือดดำ [ผู้ใหญ่]
ทำให้ข้อมูลที่ออกมา
1.0039693|560003901|สมมุติ ทดสอบ|14/1 ม.1 ต..........|31/12/2013|04/01/2014|23|1|3000853|IV ให้สารน้ำทางหลอดเลือดดำ [เด็ก]
2.0039693|560003901|สมมุติ ทดสอบ|14/1 ม.1 ต..........|31/12/2013|04/01/2014|1|1|3000853|IV ให้สารน้ำทางหลอดเลือดดำ [ผู้ใหญ่]
ทำให้ไม่สามารถทราบได้จริงว่าตกลงได้ IV ผู้ใหญ่หรือเด็ก
วิธีที่จำทำได้คือต้องอ้าง ipt_oper_code เพราะแยกกันชัดเจน แต่ผมหาไม่เจอว่ามันเชื่อมกับตารางไหนที่เกี่ยวข้อง
รบกวนเพื่อนด้วยครับ