iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
0
Software Development

iOS 從 Objective-c 進化為 Swift 的 30天之旅系列 第 21

[Day 21] Swift SQLite.swift 原來也可以使用原生SQL語法!?

  • 分享至 

  • xImage
  •  

前言

跟上一篇一樣
我需要找Array 中
重複欄位
並且將數量加總
但這是用SQLite來實作
可是上次實作的語法
跟MySQL不太一樣
如何實踐我複雜的搜尋
而且我去讀原來git
原來他其實也支援原生語法
那就可以來試試了

SQLite.swift 語法

SELECT 全部
for user  in (try? db?.prepare(users))!! {

}

如果要特殊複雜的話

let query = users.select(email)           // SELECT "email" FROM "users"
                 .filter(name != nil)                // WHERE "name" IS NOT NULL
                 .order(email.desc, name)   // ORDER BY "email" DESC, "name"
                 .limit(5, offset: 1)                 // LIMIT 5 OFFSET 1

雖然好像可以這樣實作
但還是跟SQL語法差距很多
不習慣
還好我去讀文件
可以支持就語法

SQLite.swift 使用 SQL語法

我們這邊就要SQL語法來實作
相同產品的價格加總

SELECT 簡單使用

原生的寫法SELECT

目前的架構

for user in (try? db?.prepare("SELECT DISTINCT product ,price FROM stock"))!! {
    print(user)
}

就可以拿到product ,price
每個Array中的

[大海螺, 900]
[大海螺, 99]
[歐拉, 250]
[美好, 250]

但大海螺有同樣的
應該讓兩個加總才對
所以改一下SELECT語法
SUM是加總某的欄位
GROUP BY 需檢查重複欄位

for user in (try? db?.prepare("SELECT product , price,SUM(price) FROM stock GROUP BY product"))!! {
    print(user)
}

結果如下

[大海螺, 990]
[歐拉, 250]
[美好, 250]

效果很滿意 讚讚


上一篇
[Day 20] Swift 中contains和set的使用 找重複數值用我就對了
下一篇
[Day 22] Swift Date 進階 (現在星期幾 /這個月有幾天)
系列文
iOS 從 Objective-c 進化為 Swift 的 30天之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言