รวมเทคนิคต่าง ๆ ในการพัฒนาระบบ ที่น่าสนใจ รวมไว้ที่เดียว มีอะไรสอบถาม สามารถติดต่อผ่านช่องผ่าน Fanpage เราได้เลย

วันเสาร์ที่ 2 พฤษภาคม พ.ศ. 2563

COUNT IF MySQL นับข้อมูลแบบหลายค่าพร้อมกัน ตัวอย่างการใช้งานร่วมกับ PHP

Share:

ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย  PHP connect SQL

ตัวอย่างตาราง

บทความก่อนหน้านี้เราได้ทำการสอนวิธีการ COUNT IF ผ่าน Function COUNT ของ Mysql ไปแล้ว ท่านสามารถอ่านได้   >>คลิกที่นี่<<

แต่ข้อจำกัดของการใช้งาน Function COUNT ก็คือเราสามารถใช้นับจำนวนได้ทีละ 1 ค่าเท่านั้น ดังนั้น วันนี้ OnlyMycode จะมาแนะนำวิธีนับจำนวนข้อมูลแบบหลาย ๆ ค่าพร้อมกัน

ตัวอย่างที่ 1 นับจำนวนแบบมีเงื่อนไข line_no = 1, 3 และ 5
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no3,
SUM(IF(t1.line_no = 5,1,0)) AS line_no5
FROM
doc_deal_credit_list AS t1


จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 28 / line_no1 = 26 / line_no1 = 21

Note: จากตัวอย่างด้านบน เราสามารถนับจำนวนแยกตามเงื่อนไข line_no = 1, 3 และ 5 โดยที่เราระบุเงื่อนไขไว้ที่ Function SUM IF ได้เลย


ตัวอย่างที่ 2 ลองเพิ่มเงื่อนไข ดึงข้อมูล doc_price ระหว่าง 200 - 300
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.doc_price BETWEEN 200 AND 300

จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 7 / line_no1 = 8 / line_no1 = 8

Note: เราสามารถเพิ่มเงื่อนไขการนับให้กับการนับข้อมูลผ่าน WHERE เงื่อนไขที่เราเพิ่มเข้าไปจะถูก Apply ไปใช้กับการนับจำนวนทุกค่าในชุด SQL ของเรา


ตัวอย่างที่ 3 Advance Condition ระบุเงื่อนไขให้แต่ละค่าที่ต้องการนับ
ตัวอย่างการใช้งาน
SELECT
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1

จาก SQL ด้านบนเราจะได้ผลลัพธ์ line_no1 = 6 / line_no1 = 3 / line_no1 =0

Note: เราสามารถระบุเงื่อนไขการให้กับการนับข้อมูลแบบจำเพาะผ่าน IF ในแต่ละข้อมูลเราต้องการนับดังตัวอย่างด้านบน


ตัวอย่างการใช้ COUNT IF แบบหลายค่าในรูปแบบ Code PHP
$sql = "SELECT
SUM(IF(t1.line_no = 1 AND t1.doc_price BETWEEN 200 AND 300,1,0)) AS line_no1,
SUM(IF(t1.line_no = 3 AND t1.doc_price BETWEEN 300 AND 350,1,0)) AS line_no2,
SUM(IF(t1.line_no = 5 AND t1.doc_price BETWEEN 200 AND 250,1,0)) AS line_no3
FROM
doc_deal_credit_list AS t1
WHERE t1.id > 500";
$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "บรรทัดที่ 1 : ".$detail['line_no1']." รายการ<br>";
    echo "บรรทัดที่ 2 : ".$detail['line_no2']." รายการ<br>";
    echo "บรรทัดที่ 2 : ".$detail['line_no3']." รายการ<br>";
    echo "<hr>";
}

ผลลัพธ์
บรรทัดที่ 1 : 6 รายการ
บรรทัดที่ 2 : 3 รายการ
บรรทัดที่ 3 : 0 รายการ


สรุป
เราจะใช้ Mysql SUM IF นิยมใช้ในกรณีที่เราต้องการนับจำนวนรายการ หลาย ๆ รายการพร้อมกันโดยระบุเงื่อนไขเฉพาะไปพร้อมกัน เช่น
นับจำนวนคนตามช่วงอายุ ช่วง 10 - 20 / 21 - 30 / 31 ขึ้นไป
นับจำนวนรถตามสี เช่น สีดำ / สีขาว / สีแดง / สีอื่น
นับห้องตามสถานะ เช่น จอง / พัก /
เป็นต้น

รวมเทคนิค PHP+SQL << คลิกที่นี่




Share:

บทความที่ได้รับความนิยม

Search

บทความอื่น ๆ