วิธีทำให้ MySQL return count 0 กรณีที่ Query แล้วไม่พบข้อมูล
โดยปรกติ เวลาที่เราทำการ Query จาก MySQL แล้วมีการ คำสั่งในการคำนวณค่า เล่น Count , Sum เป็นต้น ถ้าหากกรณีที่ไม่พขข้อมูลตามเงื่อนไข จะทำให้ไม่ return result ออกมาเลย
แล้วถ้าหากเราต้องการให้ return record ที่ value =0 ออกมาล่ะต้องทำอย่างไร
ตัวอย่าง
select count(*) cnt from test_table where c_type='test' ;
กรณีนี้ถ้า มี record ที่ c_type = test อยู่ก็จะ return จำนวน record ออกมา
แต่ถ้าไม่มี จะไม่ได้ result ออกมาเลย
เทคนิคง่ายๆ ในการให้ ได้ result ที่ cnt =0 ก็คือให้เราทำการ union เพิ่มนั่นเอง เช่น
select count(*) cnt from test_table where c_type='test'
union select 0 cnt;
ลองดูนะครับ ผลที่ได้ ถ้าหาก count ไม่เจอ ยังไงก็ return 0 ครับ
แต่ก็จะเจอปัญหา ถ้าหาก query เจอ type= test จะทำให้ return 2 record
คือจำนวนตามที่เจอในเงื่อนไข และก็ อีก record คือ 0 แนวทางแก้คือ เอา SUM ครอบอีกชั้นก็ได้ครับ
เช่นตามตัวอย่าง
select sum(cnt) from (
select count(*) cnt from test_table where c_type='test'
union select 0 cnt) x;
ยังไงก็ลองประยุกต์ใช้กันตามความเหมาะสมนะครับ
แล้วถ้าหากเราต้องการให้ return record ที่ value =0 ออกมาล่ะต้องทำอย่างไร
ตัวอย่าง
select count(*) cnt from test_table where c_type='test' ;
กรณีนี้ถ้า มี record ที่ c_type = test อยู่ก็จะ return จำนวน record ออกมา
แต่ถ้าไม่มี จะไม่ได้ result ออกมาเลย
เทคนิคง่ายๆ ในการให้ ได้ result ที่ cnt =0 ก็คือให้เราทำการ union เพิ่มนั่นเอง เช่น
select count(*) cnt from test_table where c_type='test'
union select 0 cnt;
ลองดูนะครับ ผลที่ได้ ถ้าหาก count ไม่เจอ ยังไงก็ return 0 ครับ
แต่ก็จะเจอปัญหา ถ้าหาก query เจอ type= test จะทำให้ return 2 record
คือจำนวนตามที่เจอในเงื่อนไข และก็ อีก record คือ 0 แนวทางแก้คือ เอา SUM ครอบอีกชั้นก็ได้ครับ
เช่นตามตัวอย่าง
select sum(cnt) from (
select count(*) cnt from test_table where c_type='test'
union select 0 cnt) x;
ยังไงก็ลองประยุกต์ใช้กันตามความเหมาะสมนะครับ
Oraediprov_ku Chris Swindle https://wakelet.com/wake/c0cG1eBTVKmf3S54fMAVe
ตอบลบnoliryma
disppuAnordni Dana Jones WinRar
ตอบลบSpeedify
https://wincracks.net/
nyatilimna
imsuin_be Jordan Shamoon Awesome
ตอบลบThis is there
nalematme