我有两个表:工作和事件。 一项工作由零个或多个事件组成。
JOBS (id,client_name,job_cost):
1, 'Kelly, Peter', '139.00'
ACTIVITIES (id,job_id,activity_name,activity_cost):
1, 1, 'Activity A', '40.00'
2, 1, 'Activity B', '59.00'
3, 1, 'Activity C', '40.00'
如何编写查询来检索以下字段:
DESIRED OUTPUT FIELDS:
job_id, client_name, job_cost, total_cost_of_activities, number_of_activities
感谢任何帮助,因为 MySQL 不是我的强项之一!
最佳答案
SELECT j.id, j.client_name, j.job_cost,
COUNT(a.id) AS number_of_activities, SUM(activity_cost) as total_cost_of_activities
FROM Jobs AS j
INNER JOIN Activities AS a ON j.id = a.job_id
GROUP BY j.id, j.client_name, j.job_cost
请注意:数字类型不应存储为 VARCHAR
(您将它们写在引号中)。为了提高速度和节省空间,您应该使用数字数据类型,例如 DECIMAL。
关于MySQL 连接查询构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9242956/