MySQL 连接查询构造

标签 mysql

我有两个表:工作和事件。 一项工作由零个或多个事件组成。

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/

相关文章:

mysql - 是否可以将此业务逻辑放在 SQL 查询中?

mysql - phpmyadmin导入数据库时​​出错

mysql - MySQL 中 utf8mb4 和 utf8 字符集有什么区别?

mysql - SQL:如何选择所有行,其中第 1 行和第 2 行等于语句中的 5 个名称之一

java - 为什么 myBatis 插入/更新函数现在需要在将 FK 添加到数据库后提交?

mysql - 可以并且应该循环遍历子查询的查询返回吗?

java.lang.ClassNotFoundException : com. mysql.jdbc.Driver [ eclipse ,Tomcat]

mysql - 在 google bigquery 中选择内部案例语句

MySQL str_to_date 没有正确转换日期

mysql - 如何对两个相关表中的列求和