1
私はこのエラーを何の不運もなく何時間も克服しようとしています。オペランドには1つの列が含まれている必要があります - ケースステートメントを使用した更新と選択
UPDATE `users` t1
SET t1.`Earnings`= (SELECT SUM(ROUND(t2.`vCost`,2)) AS totalEarned,
(
CASE
WHEN t2.`vPayment` = 'CreditCard' THEN t1.`Earnings` = (t1.`Earnings` * 1.05)
WHEN t2.`vPayment` = 'Cash' THEN t1.`Earnings` = (t1.`Earnings` * 1.25)
END
) AS total
FROM `transactions` t2 WHERE t2.`ID` = t1.`ID` AND t2.payout != 'PAIDOUT')
現在の構造:
:::Transactions Table:::
ID,
UserID,
Cost
:::User Table:::
ID,
UserID,
Earnings
結果:
Operand should contain 1 column(s)
現在のコード:
UPDATE `users` u
SET u.currentPayout = (SELECT SUM(ROUND(s.vCost,2)) AS totalEarned s
FROM transactions s
WHERE s.USERID = u.USERID AND s.payout != 'PAIDOUT'
現在のコードは、それを計算し、正常に保存し、しかし、私が欲しいですvPaymentを実装するクエリの要素。
したがって、vPaymentがCashと等しい場合は、1.25を乗算します。
はい、ただし、次のようになります。「SQL構文にエラーがあります。 'WHERE t2.'payout'!=' PAIDOUT '' at line 10' –
@FilipBusic 'SELECT'を削除しました(構文的には正しくありませんでした) 。私は論理について確信が持てません。予想される結果とともにいくつかのサンプルデータを含めると良いでしょう。 –
私はあなたの更新されたソリューションを試しましたが、結果は同じままです..私は、トランザクションテーブルと同じユーザーIDのユーザーテーブルのユーザーごとにvCostの合計を計算しようとしています。次に、計算したvCostを表1s、Earningsに設定しようとしています。私はより明確に質問を更新しました。 –