前言

跟上一篇一樣
我需要找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]

效果很滿意 讚讚


Categorized in: