2013-04-28 86 views
0

我是mysql和php的新手,在制作复杂查询方面还没有那么经验。 感谢一些用户在下面的查询stackoverflow现在成功地工作。 我现在缺少的最后一点是包括计算q1中的总数与q2中的成本之间的差异。感谢您的帮助提前。欢呼声计算两个表的列差

Select * from (SELECT invoice.eventid, invoice.invoiceno, event.clientid, client.clientid, clientname, 
gross_amount, vat, total, due 
FROM client, invoice, event 
WHERE event.eventid = invoice.eventid 
AND event.clientid = client.clientid) 
as q1 

inner JOIN (SELECT event_ma.eventid, 
salary.staffid, Sum(cost_hour * Time_to_sec(Timediff(hours, pause)))/3600 AS costs 
FROM salary 
JOIN event_ma ON salary.staffid = event_ma.staffid GROUP BY event_ma.eventid) 
as q2 
ON q1.eventid = q2.eventid 

GROUP BY q1.eventid 
+0

不要使用 “SELECT *”。写出你真正想要返回的列的名字......“SELECT q1.id,等等......”。那么解决您的问题可能会奇迹般地发生在您身上! – Strawberry 2013-04-28 07:18:58

回答

0

添加计算字段在主SELECT语句来:

Select *, (q1.total - q2.costs) AS difference 
from (SELECT invoice.eventid, invoice.invoiceno, event.clientid, client.clientid, clientname, 
gross_amount, vat, total, due 
FROM client, invoice, event 
WHERE event.eventid = invoice.eventid 
AND event.clientid = client.clientid) 
as q1 

inner JOIN (SELECT event_ma.eventid, 
salary.staffid, Sum(cost_hour * Time_to_sec(Timediff(hours, pause)))/3600 AS costs 
FROM salary 
JOIN event_ma ON salary.staffid = event_ma.staffid GROUP BY event_ma.eventid) 
as q2 
ON q1.eventid = q2.eventid 

GROUP BY q1.eventid 
+0

这是完美的。谢谢。最后很容易。 – 2013-04-28 07:32:46