我使用總和的查詢是:如何組合多個記錄並對金額行進行求和,因此只有一條記錄?
SELECT SUM(Amount) as `Amount`
FROM balances
WHERE User_ID='$user_id' AND `Wallet_ID` = '$idtw'
我需要的所有行所以在數據庫中只有一條記錄,因爲在和適用於顯示相結合,更新後撤離的平衡時,這幾乎是不可能的。
我使用總和的查詢是:如何組合多個記錄並對金額行進行求和,因此只有一條記錄?
SELECT SUM(Amount) as `Amount`
FROM balances
WHERE User_ID='$user_id' AND `Wallet_ID` = '$idtw'
我需要的所有行所以在數據庫中只有一條記錄,因爲在和適用於顯示相結合,更新後撤離的平衡時,這幾乎是不可能的。
如果我得到它的權利,用戶正餘額記錄,你是關心他的餘額的總和:
SELECT SUM(balance) FROM balances WHERE user_id=? GROUP BY user_id;
很顯然,我沒有得到它的權利。然後,我嘗試瞭解您的平衡關係是歷史記錄,您只對當前餘額感興趣(=最後一筆記錄)。我會建議給你的記錄版本,並跟蹤哪些是當前記錄。像這樣的方案可能會有所幫助:
CurrentBalance(user_id, symbol, version)
Balance(user_id, symbol, version, amount)
你CurrentBalance給你一個給定的符號和用戶的最新版本,你可以輕鬆地跟蹤您的餘額記錄,讀取平衡你的當前餘額。
你的關係的內容可能是這樣的:
CurrentBalance = {
(1, "BTC", 3),
(2, "BTC", 4),
(1, "USD", 2),
}
Balance = {
(1, "BTC", 1, 1.123),
(1, "BTC", 2, 0),
(1, "BTC", 3, 4.234), // current balance for user 1 and symbol BTC
(2, "BTC", 1, 1.00),
(2, "BTC", 2, 1.11),
(2, "BTC", 3, 0),
(2, "BTC", 4, 5.123), // current balance for user 2 and symbol BTC
(1, "USD", 1, 11.11),
(1, "USD", 2, 10.12), // current balance for user 1 and symbol USD
}
當你更新用戶的當前餘額,你只需增加在CurrentBalance
關係對用戶的版本 和他的符號,並添加新記錄 與新版本的Balance
關係。
只需製作一個ORDER BY id DESC LIMIT 1
即可獲取最後一條記錄。
好吧,我也會採納這個建議。我仍然覺得這是一個不完整的解決方案,所以我會堅持一個更完整的問題。我正在尋找一些安全,可靠,功能和快速融合的產品。 – r3wt
一個好的解決方案是每次有人「退出他的剩餘比特幣」時,您可以將信用值更新爲0,例如刪除該行。所以,用戶在該表上沒有行意味着0學分。 只有當你只有一個沒有額外字段的簡單表格時,這是很好的。 (只保存user_id和金額的表格)
我結束了我自己的解決方案,這是完全刪除重複的餘額問題。不幸的是,這造成了更多的問題,因爲現在交易引擎代替數據庫記錄來複制金額。 – r3wt
爲什麼不顯示最後一條記錄而不是第一條記錄? –
@DamienBlack,我想到了這一點,但後來我決定,爲了性能的原因,我想保持表人數最小。要搜索的行越多查詢速度越慢(imho) – r3wt
爲什麼不更新記錄? – Snowburnt