2013-04-28 4 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

ответ

0

Добавить вычисляемое поле в основной SELECT -statement:

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

Это прекрасно. Спасибо. И так легко в конце. –

Смежные вопросы