Voici ma requête. $ SESES est une variable de session, qui est un numéro de compte. C'est ici que le problème se produit: si (toacct = $ Sess, montant, '-'. Montant) Comme montant
si le compte de compte "à" = le numéro de compte de la variable de la session, je veux que le champ montant soit positif . Si le compte "sur" Le numéro de compte de la variable de session, je veux un signe avant le montant. Je ne suis tout simplement pas sûr de ce que devrait être la syntaxe. P>
SELECT transID, toAcct, fromAcct, IF(toAcct = $sess, amount, '-'.amount) as amount, `description`, `timestamp`, IF(toAcct = $sess, toAcctNewBalance, fromAcctNewBalance) AS balance FROM transactions WHERE transactions.toAcct = $ACCT or transactions.fromAcct = $ACCT ORDER BY transactions.timestamp DESC
3 Réponses :
Ceci est votre code:
(CASE WHEN toAcct = $sess THEN toAcctNewBalance ELSE fromAcctNewBalance
END) AS balance
si s'il est peut-être négatif, alors: p> quantité code> est toujours un nombre positif, puis utilisez ceci: IF(toAcct = $sess, abs(amount), -abs(amount))
Voici comment je l'ai eu pour fonctionner:
SELECT transID, toAcct, fromAcct,
IF(toAcct = $sess, amount, -amount) as amount,
`description`, timestamp,
IF(toAcct = $sess, toAcctNewBalance, fromAcctNewBalance) AS balance
FROM transactions
WHERE transactions.toAcct = $ACCT OR transactions.fromAcct = $ACCT
ORDER BY transactions.timestamp DESC;
Est
$ sess code> un numéro? Qu'en est-il de$ acct code>?S'il s'agit de MySQL, retirez les crochets.
Utilisez un cas
code> au lieu desi code> intérieurSélectionnez CODE> CLAUSES.@Dai, pourquoi? Il n'y a aucune raison de ne pas utiliser
si code> fonctionner sur une condition simple.@Danblack Désolé, je pensais à SQL Server (bien que dans T-SQL, il y a
iif (x, y, z) code>).Case Code> Les expressions sont standard SQL et portables et comprises par tout le monde.