Просто хотите попросить помощи о том, как получить сумму за строку в зависимости от пользователя? Я пытаюсь получить стоимость проекта, умножив количество часов, отработанных сотрудником, а затем вычислить его на ставку сотрудника. У меня есть 3 таблицы: Сотрудник, Часы, Проекты
Это похоже на то, как выглядит моя таблица
Для таблицы сотрудников:
Name | Rate |
Emp_A | 10.50 |
Emp_B | 15.00 |
Emp_C | 25.10 |
Для таблицы часов:
Employee | Hours | Project
Emp_A | 18.50 | PRJ.APP
Emp_A | 10.00 | PRJ.APP
Emp_B | 20.00 | PRJ.APP
Emp_B | 5.30 | PRJ.APP
Emp_C | 13.00 | PRJ.CAT
Emp_C | 8.00 | PRJ.CAT
Для таблицы проектов:
Prj_Name | Prj_Code |
Apple | PRJ.APP |
Catalina | PRJ.CAT |
Это код, который у меня сейчас есть, просто чтобы получить сумму на основе проекта и пользователя.
SELECT users.employee, SUM(timesheet.hours * 10.50)
FROM Projects prj, Hours timesheet, Employee users
WHERE prj.Prj_Name = 'PRJ.APP'
Результат, который я надеялся получить, например, когда выбрано имя проекта PRJ.APP, получает сотрудника, который работал над этим проектом, и вычисляет его для каждой строки, поскольку ставка отличается для каждого сотрудника.
Я пытался сделать что-то вроде
SELECT if(users.employee = 'Emp_A', SUM(timesheet.hours * 10.50), SUM(timesheet.hours))
FROM Projects prj, Hours timesheet, Employee users
WHERE prj.Prj_Name = 'PRJ.APP'
но при этом будет получена только сумма Emp_A, и на основе примера таблицы Emp_A и Emp_B работали над проектом PRJ.APP.
Желаемый результат для проекта PRJ.APP (сотрудники A и B работали над PRJ.APP):
| Emp | Hours | Hours_Sum |
| A | 28.50 | 285 |
| B | 25.30 | 379.5 |
Столбец часов представляет собой сумму «Часов» из таблицы «Часы», а Hours_Sum представляет собой столбец «СУММА часов», умноженный на соответствующие ставки сотрудников.
Я надеюсь, что вы, ребята, можете мне помочь. Заранее спасибо!
join
. Ваши запросы не работают, потому что вы делаете декартовы произведения. Простое правило: никогда не используйте запятые в предложенииfrom
. - person Gordon Linoff   schedule 21.10.2014