【发布时间】:2020-07-31 13:12:56
【问题描述】:
我有两个通过外键关联的表。 员工表如下:
+----+------------+-----------+---------------+
| id | first_name | last_name | billable_rate |
+----+------------+-----------+---------------+
| 1 | James | Maxston | 300 |
| 2 | Sean | Scott | 500 |
+----+------------+-----------+---------------+
时间表如下:
+----+----------+------------+------------+----------+-------------+
| id | project | date | start_time | end_time | employee_id |
+----+----------+------------+------------+----------+-------------+
| 1 | AIT | 2020-07-20 | 09:00:00 | 12:00:00 | 1 |
| 2 | Axiiscom | 2020-06-20 | 15:00:00 | 17:00:00 | 1 |
| 3 | AIT | 2020-07-20 | 13:00:00 | 18:00:00 | 1 |
| 4 | AIT | 2020-07-01 | 11:00:00 | 14:00:00 | 2 |
| 5 | AIT | 2020-06-21 | 11:00:00 | 12:00:00 | 2 |
+----+----------+------------+------------+----------+-------------+
运行下面的查询:
SELECT
project, employee_id, @hours_worked := SUM(timestampdiff(HOUR, start_time, end_time)) AS number_of_hours,
@hourly_rate :=my_db.employee.billable_rate AS unit_price,
@hours_worked * @hourly_rate AS cost
FROM
my_db.timesheet
INNER JOIN
my_db.employee ON my_db.employee.id = my_db.timesheet.employee_id
WHERE
project = "AIT"
GROUP BY
employee_id;
产生以下结果:
+---------+-------------+-----------------+------------+-------------------------------------+
| project | employee_id | number_of_hours | unit_price | cost |
+---------+-------------+-----------------+------------+-------------------------------------+
| AIT | 1 | 8 | 300 | 1200.000000000000000000000000000000 |
| AIT | 2 | 4 | 500 | 2000.000000000000000000000000000000 |
+---------+-------------+-----------------+------------+-------------------------------------+
当我期望它会产生这个结果时:
+---------+-------------+-----------------+------------+-------------------------------------+
| project | employee_id | number_of_hours | unit_price | cost |
+---------+-------------+-----------------+------------+-------------------------------------+
| AIT | 1 | 8 | 300 | 2400.000000000000000000000000000000 |
| AIT | 2 | 4 | 500 | 2000.000000000000000000000000000000 |
+---------+-------------+-----------------+------------+-------------------------------------+
我的查询哪里出错了?
【问题讨论】:
-
请学会使用正确的
GROUP BY。该查询不应该执行。
标签: mysql sql inner-join