Jump to content

[SOLVED] Simple SUM code


kool_samule

Recommended Posts

Hi Chaps,

 

Probably a really easy one for you:

 

I have some PHP/SQL code, that looks at three tables and SUMs up data from a column.

The problem is the data isn't SUMing up correctly, it places the three results after another, instead of SUMing up:

 

<?php
// Total Up Words (Net)
$query = "
(
SELECT 
tbl_jobs.jobwnet, SUM(jobwnet) 
FROM 
tbl_projects 
INNER JOIN 
tbl_jobs 
ON tbl_projects.projid=tbl_jobs.FK_projid 
INNER JOIN 
tbl_user_main 
ON tbl_user_main.userid=tbl_jobs.FK_usertranslationid 
WHERE 
tbl_jobs.jobtransih='y' 
AND tbl_jobs.jobtranscomplete='n'
)
UNION
(
SELECT 
tbl_jobtransline.jobwnet, SUM(jobwnet) 
FROM 
tbl_projects 
INNER JOIN 
tbl_jobtransline 
ON tbl_projects.projid=tbl_jobtransline.FK_projid 
INNER JOIN 
tbl_user_main 
ON tbl_user_main.userid=tbl_jobtransline.FK_usertranslationid 
WHERE 
tbl_jobtransline.jobtransih='y' 
AND tbl_jobtransline.jobtranscomplete='n'
)
UNION
(
SELECT 
tbl_jobxml.jobwnet, SUM(jobwnet) 
FROM 
tbl_projects 
INNER JOIN 
tbl_jobxml 
ON tbl_projects.projid=tbl_jobxml.FK_projid 
INNER JOIN 
tbl_user_main 
ON tbl_user_main.userid=tbl_jobxml.FK_usertranslationid 
WHERE 
tbl_jobxml.jobtransih='y' 
AND tbl_jobxml.jobtranscomplete='n'
)
";

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
echo $row['SUM(jobwnet)'];
}
?>

 

E.g:

tbl_jobs.jobwnet, SUM(jobwnet) = 100

tbl_jobtransline.jobwnet, SUM(jobwnet) = 200

tbl_jobxml.jobwnet, SUM(jobwnet) = 300

Required result = 600

Code result = 100200300

Link to comment
Share on other sites

Hi

 

A crude way of doing it:-

 

$query = "SELECT SUM(aSum)
FROM (
SELECT tbl_jobs.jobwnet, SUM(jobwnet)  AS aSum
FROM tbl_projects 
INNER JOIN tbl_jobs 
ON tbl_projects.projid=tbl_jobs.FK_projid 
INNER JOIN tbl_user_main 
ON tbl_user_main.userid=tbl_jobs.FK_usertranslationid 
WHERE tbl_jobs.jobtransih='y' 
AND tbl_jobs.jobtranscomplete='n'
)UNION(
SELECT 
tbl_jobtransline.jobwnet, SUM(jobwnet)  AS aSum
FROM tbl_projects 
INNER JOIN tbl_jobtransline 
ON tbl_projects.projid=tbl_jobtransline.FK_projid 
INNER JOIN tbl_user_main 
ON tbl_user_main.userid=tbl_jobtransline.FK_usertranslationid 
WHERE tbl_jobtransline.jobtransih='y' 
AND tbl_jobtransline.jobtranscomplete='n'
)UNION(
SELECT tbl_jobxml.jobwnet, SUM(jobwnet) AS aSum
FROM tbl_projects 
INNER JOIN tbl_jobxml 
ON tbl_projects.projid=tbl_jobxml.FK_projid 
INNER JOIN tbl_user_main 
ON tbl_user_main.userid=tbl_jobxml.FK_usertranslationid 
WHERE tbl_jobxml.jobtransih='y' 
AND tbl_jobxml.jobtranscomplete='n'
)";

 

All the best

 

Keith

Link to comment
Share on other sites

Hi

 

Ooops, yes. That is selecting from a subselect (ie, the 3 selects unioned together). You need give that subselect an alias (even if you never use that alias name).

 

$query = "SELECT SUM(aSum)

FROM ((

SELECT tbl_jobs.jobwnet, SUM(jobwnet)  AS aSum

..........

AND tbl_jobxml.jobtranscomplete='n'

)) SomeAliasName";

 

All the best

 

Keith

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.