ข้อมูล it tip

ข้อมูล IT TIP
======================================================================

วิธีแก้ไขปัญหา ให้สามารถใช้ Office 2010 บน Windows XP ได้ง่าย



=================================================================

==========================
แชร์ Internet จาก Linux

ข้อมูลจาก http://tum.in.th/blog/archives/22     แชร์ internet จาก linux

ก่อนจะลง LinuxTLE ผมมี WindowsXP ติดตั้งอยู่ และทำหน้าที่ต่อ และแชร์อินเตอร์เน็ตแบบง่ายๆ ไปยังเครื่องอื่นๆ ในบ้าน อีก 4 เครื่อง ดังนั้น เมื่อผมลง TLE แล้ว ผมจึงต้องการที่จะสั่งให้มันแชร์อินเตอร์เน็ตได้ก่อน เพื่อที่น้องๆ จะได้ไม่ต้องมาบ่น เวลาผมนั่งคุ้ยแคะแกะเกากับ Linux
ผมไม่รู้จะเริ่มต้นอย่างไร เลยตั้งใจจะเซ็ทให้แชร์ไฟล์กันได้ก่อน ข่าวดีอย่างแรกก็คือ LinuxTLE มองเห็น Windows Partitions ทั้งหมด ไฟล์ต่างๆ ที่อยู่ในเครื่อง สามารถหยิบฉวยขึ้นมาใช้ได้ทันที แต่จะไม่มีประโยชน์เลย ถ้าส่งไปเครื่องอื่นๆ ในวงไม่ได้ โดยเฉพาะเครื่อง Mac ที่ตั้งอยู่ข้างๆ
ผมเริ่มจากการเรียก Main Menu/ปรับแต่งระบบ/Network ขึ้นมาก่อน เพราะคู่มือ Installation Guide บอกไว้ ผมก็เรียกขึ้นมา ก่อนที่จะงง มันไม่มีอะไรในนั้นครับ ก็ผมยังไม่ได้เซ็ทอะไรเลย มั่วแล้วครับ ตานี้ แต่ก็มั่วอิงหลักวิชาหน่อยครับ
ผมเริ่มจากกด ADD card ก่อน แล้วก็มึนสิครับ เค้าให้ผมเลือกการ์ดด้วย ว่าใช้ชิปอะไร ตายล่ะวา ผมจะรู้ได้ไงเนี่ย เพราะตอนซื้อรู้แค่เป็น Ethernet PCI card ยี่ห้อ D-Link ซึ่งก็ไม่มีอะไรแถวนี้อยู่ใน List เลย
ในหน้าสุดท้ายของ Installation Guide บอกไว้ว่า ถ้าผมไม่รู้ว่าใช้โมเด็มยี่ห้ออะไร ให้สั่ง lspci ในเทอร์มินอล แล้วจะรู้ว่ามี PCI อะไรเสียบอยู่บ้าง เอาล่ะ มันต้องเห็นการ์ด Ethernet ของผมแน่ๆ วิธีนี้ ลองเลยครับ
เห็นครับ
00:0b.0 Ethernet Controller : D-Link System Inc RTL8139 Ethernet (rev0)
ได้เรื่องครับ ใน List ก็มีชื่อนี้อยู่ ผมก็เลือกเลย แล้วก็สั่ง Active ก็สามารถใช้งานได้ ส่วนการตั้งค่าอื่นๆ ผมใส่
Address : 192.168.0.1
Subnet Mask : 255.255.255.0
Gateway : 192.168.0.1

เหมือนที่เคยใส่ใน windows ปรากฎว่า พอสั่ง Active แล้ว ต่อเน็ทติด แต่ออกไปไหนไม่ได้ ซวยล่ะสิ ผิดตรงไหนนี่ แต่แชร์ไฟล์ระหว่างเครื่องได้
ผมสั่ง Inactive ไป ก็ยังไปไหนไม่ได้ เลือกเป็น DHCP ให้ ก็ไม่ได้ เลยลอง Restart ดู ปรากฎว่า ระหว่างการบู้ทเครื่องใหม่ มันฟ้อง FAIL ที่ eth0 ผมเจอปัญหาแล้วล่ะ แต่ก็บู้ทได้ครับ ต่อเน็ทได้ด้วย แต่แชร์อะไรไม่ได้แล้ว เปิดดูใน Network ก็เห็นว่า Inactive อยู่ งมจนหมดทางแล้ว ก็เลยไปถามที่เวบตัวเองครับ Freemac.net เผื่อจะมีเพื่อนๆ ที่รู้แวะเข้ามาบ้าง ก็มีคนมาตอบให้ พร้อมกับช่วยสร้างนิสัยใหม่ให้ผมด้วย คือ Search จาก google ครับ กระทู้นี้ครับ
เอาล่ะ เริ่มเห็นทางสว่าง …
ประกอบกับข้อมูลในหนังสือ การติดตั้ง Internet Server ด้วย Linux เขียนโดยคุณ บุญลือ อยู่คง โดยสำนักพิมพ์ Sci-Tech
บอกไว้ในหนังสือว่า การเซ็ทค่าให้เครื่องแม่ ในการแชร์ Internet คุณจะใส่ค่าต่างๆ แค่



  • IP Address ของเครื่อง




  • Subnet Mask



  • DNS ของ ISP ที่คุณใช้บริการ ส่วน Gateway ไม่ต้องใส่ เพราะไม่อย่างนั้น มันจะวิ่งวนอยู่ในเครื่องตัวเอง ไม่ออกไปไหน
    อ้ออออออ…….
    ผมก็จัดการแก้ไขให้ถูกต้องครับ
    เสร็จแล้วก็สั่ง card ให้ Active ตานี้ไม่มีปัญหาแล้วครับ
    ผมหาข้อมูลต่อไปในหนังสือ ถึงวิธีเซ็ทค่าให้เครื่องลูกข่ายก็พบว่า
    คุณจะต้องใส่ค่าดังนี้ครับ



  • Address : 192.168.0.2




  • Subnet Mask : 255.255.255.0



  • Gateway : 192.168.0.1 Address นี่ก็เปลี่ยนไปตามเครื่องนะครับ เป็น 192.168.0.2 …3 …4 …5 ไปจนครบ Gateway ให้ชี้มาที่เครื่องแม่ และใส่ค่า DNS ในเครื่องลูกเป็น ip ของ ISP ที่คุณใช้บริการด้วยครับ ผมลองไม่ใส่ DNS แล้ว ปรากฎว่าไม่วิ่งครับ
    และผมไปค้นหาวิธีการแชร์อินเตอร์เน็ตเพิ่มเติมมาจาก Quick Internet Server Guide 0.5 โดยคุณพัฒน์นนท์ ดวงดารา ซึ่งให้ข้อมูลเพิ่มเติม ถึงวิธีการดูค่า DNS ของ ISP ที่เราใช้บริการอยู่ครับ โดยเปิดดูที่ไฟล์ /etc/resolv.conf ได้เลย ดังภาพครับ

    ผมทำแค่นี้ แล้วลองเปิดเครื่องลูกข่ายเล่นเน็ทดู ไม่สำเร็จครับ ยังไปไหนไม่ได้ ผมกลับไปอ่านที่ OpenTLE.org โดยละเอียดอีกครั้ง โดย search ด้วยคำว่า Share Internet เจอคำตอบครับ กระทู้นี้ครับ แต่ผมทำตามไม่สำเร็จ
    คำตอบในหัวข้อนั้นมีดังนี้ครับ
    ================
    โดยคุณ : Annonymous
    ผมรู้แต่วิธีทำให้มันแชร์เนตได้ งมอยู่นานเหมือนกันครับ ที่บ้านเด็กเยอะ เลยซื้อคอมไว้ 4ตัว ต่อเนตครั้งเดียวแชร์เนตเพราะกันได้ทุกเครื่อง ทุกตัวลงทั้งวินโดว์และลีนุกทะเล
    ที่ตังแม่ ทำแบบนี้นะ
    1.เข้า terminal แล้ว su root
    2.service iptables stop
    3.echo 1 > /proc/sys/net/ipv4/ip_forward
    4.iptables -t nat -A POSTROUTING source-network/net-mask -o output-interface -j MASQUERADE
    หมายเหตุ ต้องระวังเรื่องตัวพิมพ์ เล็ก-ใหญ่ ด้วย
    source-network/net-mask คือ IP/netmask ของเครื่องที่ใช้ต่อเนต เช่น 192.168.0.1/255.255.255.0
    output-interface คือ อุปกรณ์ต่อเนต เช่น modem ใช้ ppp0 ครับ
    5.ตั้ง gateway ให้เครื่องลูกข่าย ชี้มาที่ตัวต่อเนต เช่น 192.168.0.1
    6.ตั้ง dns เป็นของ isp ที่ใช้อยู่ (ตรวจสอบที่ /etc/resolv.conf)
    แล้วลองทดสอบที่ตัวลูก ถ้าไม่ผิดพลาดก็น่าจะ เปิดเวบ ต่างๆได้นะ
    7.จากนั้น ไปแก้ไฟล์ที่ /etc/sysctl.conf ตรง net.ipv4.ip_forward (จาก 0 —> เป็น 1)
    8.service iptables save
    9.chkconfig iptables on
    จบ ….ขอให้โชคดีครับ
    ======================
    นั่นคือคำตอบที่ผมพบ เมื่อเข้าไป Search ใน OpenTLE.org ผมลองสั่งผ่าน Terminal ตามข้อมูลที่ได้มา แต่ไม่สำเร็จครับ มีการฟ้องจาก Terminal ประมาณว่า คำสั่ง iptables ไม่มีอะไรประมาณนี้ ผมก็มึนตึ้บ จะแก้ยังไงดีหว่า ก็กลับไปที่ OpenTLE.org ใหม่ แล้ว search ด้วยคำว่า iptables ก็ได้ทราบคำตอบที่ต้องการครับ
    iptables เป็น service ที่มีอยู่แล้วใน TLE เราสามารถเปิดใช้งานได้ โดยสั่งผ่าน Terminal ด้วยคำสั่ง
    service iptables start
    หรือเปิด service ที่ว่า ผ่านทาง Main Menu/ปรับแต่งระบบ/ปรับแต่งเซิร์ฟเวอร์/Services ครับ ติ๊กที่ช่องข้างหน้าของ iptables เพื่อให้มัน start ทุกครั้งที่เปิดเครื่อง แล้วกด start ที่เมนูข้างบน
    เท่านี้ คุณก็จะมีคำสั่ง iptables พร้อมทำงานครับ
    ผมก็เริ่มสั่งตามข้อมูลที่ได้มาอีก แต่ก็ยังไม่สำเร็จ พอดีไปพบ กระทู้นี้ครับ < ---click
    ซึ่งแนะนำว่า ถ้าจะแชร์อินเตอร์เน็ท ให้ไปอ่านบทความ Quick Internet Server Guide 0.5 โดยคุณพัฒน์นนท์ ดวงดารา ซึ่งพบว่า คำสั่งในตัวอย่างจากกระทู้ข้างบน ตก -s ไป ทำให้คำสั่งไม่ผ่านครับ ตอนนี้ผมแชร์เน็ทได้แล้ว
    สรุป วิธีแชร์อินเตอร์เน็ทโดยใช้ LinuxTLE 5.0 ครับ




  • Active Ethernet Card ใส่ค่าที่เครื่องแม่ให้ถูกต้อง ดังนี้



  • Address : 192.168.0.1




  • Subnet Mask : 255.255.255.0




  • Gateway : ปล่อยว่างไว้




  • เปิด service iptables โดยสั่ง service iptables start ผ่าน Terminal หรือเปิด service ที่ว่า ผ่านทาง Main Menu/ปรับแต่งระบบ/ปรับแต่งเซิร์ฟเวอร์/Services ครับ ติ๊กที่ช่องข้างหน้าของ iptables เพื่อให้มัน start ทุกครั้งที่เปิดเครื่อง แล้วกด start ที่เมนูข้างบน




  • เปิด Terminal สั่ง su root ใส่ password (นอกจากเป็น root อยู่แล้ว)




  • สั่ง service iptables stop [ENTER]




  • สั่ง echo 1 > /proc/sys/net/ipv4/ip_forward [ENTER]




  • สั่ง iptables -t nat -A POSTROUTING -s SOURCE_NETWORK/MASK -o OUTPUT_INTERFACE -j MASQUERADE [ENTER]




  • สำหรับ SOURCE_NETWORK/MASK ก็คือ Network และ Netmask ของเครือข่ายที่จะยอมให้ผ่านออกไปได้ เช่น 192.168.0.0/255.255.255.0






  • ส่วน OUTPUT_INTERFACE คือ Interface ที่ต่อกับ Internet เช่น ppp0 (modem ธรรมดาส่วนมากจะใช้ ppp0 หรือจะใช้ ppp+ ก็ใด้้ในกรณีมี modem หลายตัว และไม่ทราบว่าอยู่ ppp interface ใด …



  • หรือถ้าเป็น Leased Line หรือองค์กร ที่มี IP จริง ๆ เชื่อมผ่าน LAN Card อ่านจะใช้ eth0 หรืออื่น ๆ ตามความเหมาะสม)



  • ตัวอย่างคำสั่ง iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE [ENTER]



  • ตั้ง gateway ให้เครื่องลูกข่าย ชี้มาที่ตัวต่อเนต เช่น 192.168.0.1



  • ตั้ง dns เป็นของ isp ที่ใช้อยู่ (ตรวจสอบที่ /etc/resolv.conf)



  • ไปแก้ไฟล์ที่ /etc/sysctl.conf ตรง net.ipv4.ip_forward (จาก 0 —> เป็น 1)




  • สั่ง service iptables save




  • สั่ง chkconfig iptables on เสร็จครับ ถ้าสั่งทุกอย่างถูกต้อง ก็จะแชร์เน็ทง่ายๆ ในบ้านได้ทันที
    แหล่งข้อมูล :
    OpenTLE.org
    Quick Internet Server Guide 0.5 โดยคุณพัฒน์นนท์ ดวงดารา
    Freemac.net Forums
    หนังสือการติดตั้ง Internet Server ด้วย Linux โดยคุณบุญลือ อยู่คง
    คู่มือ Installation Guide ของ LinuxTLE 5.0


  • =========================================================
    การเชื่อมต่อเพื่อตรวจสอบข้อมูล สู่ระดับสูง

    serverse  จังหวัด IP 203.157.165.11 หรือ 203.157.165.111
    ของอำเภอ 61.19.213.220
    port เชื่อมต่อ 3333

    code สำหรับตรวจสอบข้อมูล 30 วัน
    =========================
    SELECT
    service.pcucode,
    master_office.off_name,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -0 day),'%Y%m%d'))then 1 else 0 END )AS วันนี้,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -1 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน1วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -2 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน2วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -3 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน3วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -4 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน4วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -5 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน5วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -6 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน6วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -7 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน7วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -8 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน8วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -9 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน9วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -10 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน10วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -11 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน11วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -12 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน12วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -13 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน13วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -14 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน14วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -15 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน15วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -16 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน16วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -17 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน17วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -18 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน18วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -19 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน19วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -20 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน20วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -21 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน21วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -22 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน22วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -23 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน23วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -24 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน24วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -25 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน25วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -26 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน26วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -27 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน27วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -28 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน28วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -29 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน29วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -30 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน30วัน,
    sum(case WHEN service.date_serv=(DATE_FORMAT(DATE_ADD(now(),INTERVAL -31 day),'%Y%m%d'))then 1 else 0 END )AS ก่อน31day
    FROM
    service
    inner join master_office on (service.pcucode = master_office.off_id)
    where (master_office.distid = '3305')

    GROUP BY
    service.pcucode

    ===============

    รวม SQL For JHCIS
    ===============
    ประชากรเป้าหมาย
    ===============
    SELECT house.villcode,
    SUM(CASE WHEN person.typelive in ('1','3') AND ROUND(DATEDIFF('2012-12-31',person.birth)/30) <= 6 THEN 1 ELSE '' END) AS '0-6เดือน',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2011-12-01' and '2011-12-31' THEN 1 ELSE '' END) AS 'ครบ1ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND ROUND(DATEDIFF('2012-12-31',person.birth)/30) <= 35.99 THEN 1 ELSE '' END) AS '0-2ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2010-12-01' and '2010-12-31' THEN 1 ELSE '' END) AS 'ครบ2ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND ROUND(DATEDIFF('2012-12-31',person.birth)/30) <= 47.99 THEN 1 ELSE '' END) AS '0-3ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2009-12-01' and '2009-12-31' THEN 1 ELSE '' END) AS 'ครบ3ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND ROUND(DATEDIFF('2012-12-31',person.birth)/30) BETWEEN 36 AND 71.99 THEN 1 ELSE '' END) AS '3-5ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2007-12-01' and '2007-12-31' THEN 1 ELSE '' END) AS 'ครบ5ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND ROUND(DATEDIFF('2012-12-31',person.birth)/30) BETWEEN 72 AND 143.99 THEN 1 ELSE '' END) AS '6-12ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') >= 15 THEN 1 ELSE '' END) AS '15ปีขึ้นไป',
    SUM(CASE WHEN person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') >= 35 THEN 1 ELSE '' END) AS '35ปีขึ้นไป',
    SUM(CASE WHEN person.sex='2' AND person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') BETWEEN 30 AND 59.99 THEN 1 ELSE '' END) AS 'หญิง30-60ปี',
    SUM(CASE WHEN person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') >= 60 THEN 1 ELSE '' END) AS '60ปีขึ้นไป'
    FROM
    person
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    WHERE (person.dischargetype is null or person.dischargetype = 9) and SUBSTRING(house.villcode,7,2) !='00'
    group by house.villcode
    ================
    2. นักเรียนป.1 และ ป.ุ6
    ================
    SELECT house.villcode,
    SUM(CASE WHEN personstudent.classeducate = '4' THEN 1 ELSE '' END)AS 'ป.1',
    SUM(CASE WHEN personstudent.classeducate = '9' THEN 1 ELSE '' END)AS 'ป.6'
    FROM person INNER JOIN personstudent ON person.pid = personstudent.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    order by personstudent.pid
    =====================
    3. ประชากรวัยแรงงานที่ป่วยเรื้อรัง
    =====================
    SELECT house.villcode,
    SUM(CASE WHEN person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') < 60 and personchronic.typedischart != '02' THEN 1 ELSE '' END)AS 'popFlu'
    FROM person INNER JOIN personchronic ON person.pid = personchronic.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    
    ======================
    4. ผู้พิการ
    ======================
    SELECT house.villcode,
    SUM(CASE WHEN person.typelive in ('1','3') THEN 1 ELSE '' END)AS 'พิการ'
    FROM person INNER JOIN personunable ON person.pid = personunable.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    
    ========================
    5. EPI นักเรียน
    =======================
    SELECT house.villcode,
    SUM(CASE WHEN personstudent.classeducate = '4' and visitepi.vaccinecode = 'MMR2' THEN 1 ELSE '' END)as 'MMR2',
    SUM(CASE WHEN personstudent.classeducate = '9' and visitepi.vaccinecode = 'DTS4' THEN 1 ELSE '' END)as 'DTS4'
    FROM person INNER JOIN personstudent ON person.pid = personstudent.pid
    INNER JOIN visitepi ON person.pcucodeperson = visitepi.pcucodeperson AND person.pid = visitepi.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    
    =========================
    6. EPI Flu กลุ่มวัยแรงงานป่วยเรื้อรัง
    ======================
    SELECT house.villcode,
    SUM(CASE WHEN person.typelive in ('1','3') AND GetAgeYearNum(person.birth,'2012-12-31') < 60 and personchronic.typedischart != '02' and visitepi.vaccinecode = 'FLU' THEN 1 ELSE '' END) as 'FLU'
    FROM person INNER JOIN personchronic ON person.pid = personchronic.pid
    INNER JOIN visitepi ON person.pcucodeperson = visitepi.pcucodeperson AND person.pid = visitepi.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    
    ======================
    7. EPI Coverage
    ======================
    SELECT house.villcode,
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2011-12-01' and '2011-12-31' and visitepi.vaccinecode = 'BCG' THEN 1 ELSE '' END) AS 'BCG',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2011-12-01' and '2011-12-31' and visitepi.vaccinecode = 'DHB3' THEN 1 ELSE '' END) AS 'DHB3',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2011-12-01' and '2011-12-31' and visitepi.vaccinecode = 'OPV3' THEN 1 ELSE '' END) AS 'OPV3',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2011-12-01' and '2011-12-31' and visitepi.vaccinecode = 'MMR' THEN 1 ELSE '' END) AS 'MMR',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2010-12-01' and '2010-12-31' and visitepi.vaccinecode = 'DTP4' THEN 1 ELSE '' END) AS 'DTP4',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2010-12-01' and '2010-12-31' and visitepi.vaccinecode = 'OPV4' THEN 1 ELSE '' END) AS 'OPV4',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2010-12-01' and '2010-12-31' and visitepi.vaccinecode = 'JE2' THEN 1 ELSE '' END) AS 'JE2',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2009-12-01' and '2009-12-31' and visitepi.vaccinecode = 'JE3' THEN 1 ELSE '' END) AS 'JE3',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2007-12-01' and '2007-12-31' and visitepi.vaccinecode = 'DTP5' THEN 1 ELSE '' END) AS 'DTP5',
    SUM(CASE WHEN person.typelive in ('1','3') AND person.birth between '2007-12-01' and '2007-12-31' and visitepi.vaccinecode = 'OPV5' THEN 1 ELSE '' END) AS 'OPV5'
    
    FROM person INNER JOIN visitepi ON person.pcucodeperson = visitepi.pcucodeperson AND person.pid = visitepi.pid
    INNER JOIN house ON person.pcucodeperson = house.pcucode
    AND person.hcode = house.hcode
    INNER JOIN village ON house.pcucode = village.pcucode
    AND village.villcode = house.villcode
    group by house.villcode
    ========================

















































    สถิตการเข้าชม