======================================================================
วิธีแก้ไขปัญหา ให้สามารถใช้ 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 คุณจะใส่ค่าต่างๆ แค่
อ้ออออออ…….
ผมก็จัดการแก้ไขให้ถูกต้องครับ
เสร็จแล้วก็สั่ง card ให้ Active ตานี้ไม่มีปัญหาแล้วครับ
ผมหาข้อมูลต่อไปในหนังสือ ถึงวิธีเซ็ทค่าให้เครื่องลูกข่ายก็พบว่า
คุณจะต้องใส่ค่าดังนี้ครับ
และผมไปค้นหาวิธีการแชร์อินเตอร์เน็ตเพิ่มเติมมาจาก 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 ครับ
แหล่งข้อมูล :
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 ========================