2013-04-27 3 views
0

Я действительно застрял в этом запросе mysql. Я помогаю другу с созданием персонала/события. Я успешно создал виртуальную таблицу, видя затраты каждого сотрудника на каждое событие. В ниже запросе я выбрать событиеMYSQL Сумма подзапроса

SELECT event.eventid, costs.staffnumber, cost _hour *(SUM(TIME_TO_SEC(TIMEDIFF(hours, pause)))) /3600 AS costs_event 
FROM costs, event 
WHERE costs.staffnumber = event.staffnumber 
GROUP BY event.eventid, event.staffnumber 

Если я забрать group by event.staffnumber это дает мне неправильное значение. Поскольку разные строки имеют разные значения, но они предполагают, что каждый штат сотрудников имеет то же самое cost_hour.

Пример:

1001 (Eventid) 
42 (staffnumber) 
112,50 (Costs Sum from 15 EUR * 7,5 hours) 

второй ряд

1001 
41 (staffnumber) 
78 (Costs Sum from 12 * 6,5 hours) 

, поэтому я хочу, чтобы получить 190,50

Когда я забрать group by event.staffnumber я получаю 210 EUR (14hours * 15 EUR) ,

Итак, как я могу подвести итог колонке costs_event и сгруппировать их по event.eventid.

Был бы благодарен за помощь.

Приветствия

ответ

0

Включите cost_hour внутри сумму:

SELECT event.eventid, 
     costs.staffnumber, 
     SUM(cost _hour*TIME_TO_SEC(TIMEDIFF(hours, pause))) /3600 AS costs_event 
FROM costs 
JOIN event 
    ON costs.staffnumber = event.staffnumber 
GROUP BY event.eventid 
+0

Великий спасибо так много. –

+0

Рад, что я мог помочь. –

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