MySQL:在多对多表中计算实例
我正在创建一个小型招聘网站,我想知道这在MySQL中是否可行:我有3个示例工作,我想显示所有申请MySQL:在多对多表中计算实例,mysql,Mysql,我正在创建一个小型招聘网站,我想知道这在MySQL中是否可行:我有3个示例工作,我想显示所有申请工作的用户,他们的应用程序状态为'pending',同时显示其他'pending'和'pending'+'hired'应用程序的总数每个用户都有一个 我一直在想办法解决这个问题,但我遇到了一些问题。这是MySQL可以做到的吗 users +----+-------+ | ID | name | +----+-------+ | 1 | hanna | | 2 | bob | | 3 |
工作的用户,他们的应用程序状态为'pending'
,同时显示其他'pending'
和'pending'+'hired'
应用程序的总数每个用户都有一个
我一直在想办法解决这个问题,但我遇到了一些问题。这是MySQL可以做到的吗
users
+----+-------+
| ID | name |
+----+-------+
| 1 | hanna |
| 2 | bob |
| 3 | rick |
+----+-------+
job
+--------+------------+
| job_id | jobname |
+--------+------------+
| 1 | 'waiter'|
| 2 | 'janitor'|
| 3 | 'cook'|
+--------+------------+
applications
+----------+---------+-----------+
| user_id | job_id | status |
+----------+---------+-----------+
| 1 | 1 | 'pending' |
| 1 | 2 | 'pending' |
| 1 | 3 | ' hired' |
| 2 | 1 | 'pending' |
| 3 | 1 | 'removed' |
+----------+---------+-----------+
我的成绩集
+--------+---------+-----------+---------------+--------------------+
| job_id | user_id | status | count_pending | count_pendinghired |
+--------+---------+-----------+---------------+--------------------+
| 1 | 1 | 'pending' | 2 | 3 |
| 1 | 2 | 'pending' | 1 | 1 |
+--------+---------+-----------+---------------+--------------------+
下面的查询接近您建议的输出。请注意,将单个作业\u id
与给定用户关联是没有意义的,因为一个用户可能有多个作业。同样,将一个状态
与给定的用户关联也没有意义,因为每个记录表示多个状态的聚合
SELECT user_id,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS count_pending,
SUM(CASE WHEN status = 'pending' OR status = 'hired'
THEN 1 ELSE 0 END) AS count_pendinghired
FROM applications
GROUP BY user_id
下面的查询接近您建议的输出。请注意,将单个作业\u id
与给定用户关联是没有意义的,因为一个用户可能有多个作业。同样,将一个状态
与给定的用户关联也没有意义,因为每个记录表示多个状态的聚合
SELECT user_id,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS count_pending,
SUM(CASE WHEN status = 'pending' OR status = 'hired'
THEN 1 ELSE 0 END) AS count_pendinghired
FROM applications
GROUP BY user_id
嗯,我将最后一部分修改为按状态为'pending'且作业id为1的用户进行分组,这得到了我期望的数据。但是,您能否确认这是否正确,或者我在未来的特定情况下是否会遇到问题?@enchance如果您添加了这样一个HAVING
条款,那么您将无法计算被雇用的用户数。这就是你想要的吗?嗯,我将最后一部分修改为GROUP BY user_id,status='pending'和job_id=1,这得到了我期望的数据。但是,您能否确认这是否正确,或者我在未来的特定情况下是否会遇到问题?@enchance如果您添加了这样一个HAVING
条款,那么您将无法计算被雇用的用户数。这是你想要的吗?