SQL Examples¶
เนื้อหามาจากคำถามเกี่ยวกับการใช้งานคำสั่ง SQL หรือ ต้องการฟังก์ชั่นที่สามารถทดแทนด้วยคำสั่ง SQL
จะถูกนำมารวมไว้ที่หน้านี้เพื่อไว้อ้างอิง และนำไปใช้งานได้ง่ายต่อไป
1. การใช้ SQL นับค่า
A: ใช้ function count() ร่วมกับ where
ตัวอย่าง
AmgCnt.SQLite.read.get({sql:'select N_total, N_update, N_total-N_update as N_remain from (select (select count() from N) as N_total, (select count() from N where "สถานะ"=1) as N_update)', params:[]}, function(res) {
/*
N_total = เป็นการนับจำนวนแถวทั้งหมดในตาราง N (res.row.N_total)
N_update = เป็นการนับจำนวนแถวทั้งหมดในตาราง N ที่มีคอลัมน์ "สถานะ" = 1 (res.row.N_update)
N_remain = เป็นผลต่างของ N_total และ N_update (res.row.N_remain)
*/
});
//ถ้าใช้ AmgCnt.SQLite.read.all res.row จะต้องเป็น res.rows[0]
หรือ
AmgCnt.SQLite.read.get({sql:'select (select count() from N) as N_total, (select count() from N where "สถานะ"=1) as N_update, (select count() from N where "สถานะ"!=1) as N_remain', params:[]}, function(res) {
/*
N_total = เป็นการนับจำนวนแถวทั้งหมดในตาราง N (res.row.N_total)
N_update = เป็นการนับจำนวนแถวทั้งหมดในตาราง N ที่มีคอลัมน์ "สถานะ" = 1 (res.row.N_update)
N_remain = เป็นผลต่างของ N_total และ N_update (res.row.N_remain)
*/
});
//ถ้าใช้ AmgCnt.SQLite.read.all res.row จะต้องเป็น res.rows[0]
2. ต้องการ datetime จาก server
A: ใช้คำสั่ง SQL เพื่อ get datetime ได้
AmgCnt.SQLite.read.get({sql:`select datetime('now') as v1, datetime('now', 'localtime') as v2, strftime('%s', 'now') as v3, strftime('%Y-%m-%dT%H:%M:%fZ', 'now') as v4`}, function(res){
AmgCnt.alert({body_html:`<p>Now: ${res.row.v1}</p><p>Localtime: ${res.row.v2}</p><p>MS: ${res.row.v3}</p><p>ISO: ${res.row.v4}</p>`, timeout:5});
//ตัวอย่างใช้ AmgCnt.SQLite.read.get แต่สามารถเปลี่ยนเป็น AmgCnt.SQLite.read.all ได้ โดย res.row ในตัวอย่างจะต้องถูกเปลี่ยนเป็น res.rows[0]
});
ศึกษาเพิ่มเติมได้จาก https://www.sqlitetutorial.net/sqlite-date-functions