を動作していないではないだから私は、次のカルコゲノフルバレン骨格を持つトランザクションテーブル内のすべてのトランザクションを格納します。mysqlは等しい
+----------------+---------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+----------------+
| debit_amount | decimal(10,2) | YES | | 0.00 | |
| credit_amount | decimal(10,2) | YES | | 0.00 | |
| flag | int(11) | YES | | NULL | |
| date | datetime | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | auto_increment |
+----------------+---------------+------+-----+---------+----------------+
それから私は、ユーザーがユーザーテーブルに「クレジット」の行に持ってクレジットの総量を保存します。
私は、取引テーブルに格納されているユーザーごとの合計(借方金額+クレジット数)がユーザーテーブルに保存されているクレジット数に不一致があるかどうかを確認しようとしています。
各ユーザtransactions.debit_amount + transactions.credit amount MUST EQUAL user.credits
ための基本的
なく(transactions.totalトランザクションテーブルには行がそのユーザのために存在しない、すなわちヌルである場合は特に)、MySQLのクエリ内の等しい演算子は動作しないしません:
SELECT s.id AS uid, s.total, s.credits
FROM (
SELECT (sum(t.credit_amount) + sum(t.debit_amount)) AS total, t.userid, u.credits, u.id
FROM transactions AS t
RIGHT JOIN users AS u ON t.userid = u.id
GROUP BY u.id
) AS s
WHERE s.total != s.credits
ちょっと考えましたが、ここではニックピッキングが可能ですが、トランザクションクエリのデータベースコンテキストでの単語の特別な意味のために 'トランザクション'とは異なる名前を使用しようとします...エラーは発生しませんが人々のために物事を1%難しくするかもしれません... – rdlowrey
[推測] s.total <> s.credits [/ code] – Alfabravo
あなたは '動作しません 'と言っていますが返されるものの例は与えませんそしてそれがあなたが期待しているものとどのように違うのか... – DaveRandom