Je suis à la recherche d'une solution à ce qui suit:Comment Somme multiple Colonne avec valeur multiple
Aller à la table des utilisateurs et trouver un utilisateur qui a dressé la liste des articles sur le site. Dans cette table d'utilisateurs, il n'y a pas de colonne sur les enchères. Au lieu de cela, il est connecté à une table de comptes avec une clé (dans les comptes, cette colonne est appelée utilisateur)
De ces IDs (utilisateurs qui ont listé des articles pour la vente aux enchères), j'ai besoin de trouver le solde de leur compte. C'est aussi dans la table des comptes. Le solde est contenu dans une colonne appelée operation_amount. J'ai aussi une autre colonne appelée operation_type qui décrit si un utilisateur a un solde positif ou négatif. Par exemple, si operation_type = 1, il a un solde négatif, alors que si operation_type = 2, il a un solde positif.
Maintenant, j'ai une autre table appelée tmpinvoice
où il y a une colonne appelée quantité. Cela montre combien de frais un utilisateur doit payer aux administrateurs du site. Compte tenu de cela, j'ai besoin de calculer combien il doit payer au total. Par exemple, si un utilisateur a un solde de 200 $, je dois vérifier s'il est négatif ou positif sur la base du operation_type
.
J'ai donc demande où est-ce que ce dossier est
SELECT u.id AS id_user, u.nick,
CASE ac.operation_type WHEN 1 THEN ac.operation_amount - tm.amount
WHEN 2 THEN ac.operation_amount + tm.amount
ELSE 'N/A' END AS `fee`
FROM auctionbg_search.accounts AS ac
LEFT JOIN auctionbg_search.users AS u ON TRUE
AND u.id = ac.user
LEFT JOIN auctionbg_search.auctions AS a ON TRUE
AND a.id = ac.auction
LEFT JOIN auctionbg_search.tmpinvoice AS tm ON TRUE
WHERE TRUE
AND tm.amount = ac.operation_amount
Voici ce résultat que je reçois
http://gyazo.com/3d7e7f52ee14d21cc8c8d33b6bbc479a
Oui, mais ce calcul « taxe » seulement pour 1 valeur colonne, si l'utilisateur a plusieurs valeurs
comme cet utilisateur:
http://gyazo.com/c3bdb29fa235044ab888dc0385bbcdbd
Je dois calculer montant total de operation_amount de cet utilisateur donné et retirer tmpinvoice
de ce montant total,
Un de mes amis m'a dit d'utiliser
IF(SUM(ac.operation_amount), IS NULL , 0, sum(ac.operation_amount)
et à se joindre à 2 temps comptes (table) pour les deux cas avec + et -
joindre 1 fois pour +, 2 fois pour -
mais je n'arrive pas à comprendre à quoi ressemblera :)
Quel système base de données que vous utilisez? –
MySQL 5 pourquoi demandez-vous? – ameldur