2010-04-26 6 views
0

Je voudrais faire une somme simple par salesid en PHP - mysql après le calcul croisé entre la date (2 tables) pour obtenir la commission en temps réel, toute la valeur déjà sortir correctement, mais je avoir un problème avec la somme finale par identifiant de vente.Somme dans le tableau avec la valeur de correspondance

Chaque fois qu'il ya un changement dans la forme de commission d'entrée, la nouvelle valeur est insérée:

 
salesid commission datefrom - dateto 
aa0001 20%   2010/01/01 - 2010/02/09 
aa0001 25%   2010/02/09 - null 

et transaction Table a

 
items qty price salesid transactiondate 

valeur d'appel de la commission de la table où salesid = $ _sessionid $ aujourd'hui = date en php la semaine prochaine.

if ($dateto == 0) { 
$dateto = $today; } 

valeur d'appel de la transaction de table où salesid = $ _ sessionid

J'utilise ci-dessous gamme pour obtenir la commssion avec la date de la transaction:

if ($transactiondate >= $datefrom and $transactiondate < $dateto) { 
$subcommission = ($price * $commission) } 

et la valeur viendra comme ci-dessous:

 
salesid commission 
aa0001 1000 
bb0001 500 
aa0001 200 
bb0001 50 

J'ai déjà essayé avec quelques exemples dans ce web mais je ne peux toujours pas rencontrer la bonne résolution lt. Je ne peux pas faire la somme dans une base MySQL pour quelque raison (il faut calculer avec autre table)

le résultat sera:

 
aa0001 1200 
bb0001 550 

Je vous remercie de toute aide pour terminer le test. Merci beaucoup.

+0

S'il vous plaît, dites-nous que vous structure db. Je pense que cela peut être fait complètement dans mysql. – Ben

+0

vous devriez fournir plus de détails sur votre "tableau d'entrée" afin d'obtenir une réponse. –

+0

Le calcul ci-dessus est le formulaire d'affichage et non le formulaire d'entrée. toutes les données sont déjà dans la table et la transaction de table – user325504

Répondre

1

Si c'est censé représenter une table avec salesid et commission colonnes, vous pouvez simplement faire:

SELECT salesid, SUM(commission) FROM table GROUP BY salesid; 

Même si cela dépend de vous joindre devriez être en mesure de le faire, mais manque détails que je peux » t vraiment donner un exemple

+0

Je ne peux pas faire de somme dans mysql car besoin de calcul en php. dans la table de commission obtenu: salesid-commission-datefrom-dateto. thats façon php J'utilise: if (transactiondate> = datefrom et transactiondate user325504

+0

vous pouvez utiliser un sql JOIN ou en PHP array_sum ou array_walk ou une autre fonction personnalisée. mais sans plus de détails à condition qu'il soit difficile de vous aider plus loin. –

+0

@OP: vous pouvez aussi faire le calcul des dates en SQL. – mpen

0

Vous pouvez créer un tableau dont la clé est salesid et la valeur est commission puis de nouveau filtrer le tableau pour la même clé. ça peut t'aider.

0

Je ne suis pas trop expert avec php, parce que je vb vraiment programmeur. Et je ne suis pas trop expert en utilisant index, clé ou tableau multiple.

J'ai résolu ce problème en utilisant la table temporaire pour stocker des données temporaires avec la session. chaque fois que le formulaire est ouvert, supprimer les données dans la table temporaire avec l'ID de session et créer les données de calcul et les insérer dans la table temporaire, puis sélectionner de nouveau les données avec sum et group by.

Merci pour tous vous soutenir et je en savoir plus à partir de maintenant .... nice day .. bro

Questions connexes