Mysql - 按与他相关的项目选择用户

时间:2013-08-08 20:02:19

标签: mysql

我有两个表:tbl_users和tbl_users_jobs。

tbl_users作为使用信息 tbl_users_jobs作为与该用户相关的作业。

假设我有3个用户:id 1,2和3。

用户1有2个作业,用户3有3个作业,用户2只有1个作业。 我想向工作较少的用户插入一份新工作(所以我可以将工作分配给所有用户)。

我该怎么做? 需要考虑一件事: 例如,用户可以从今天开始,没有工作......

这是表结构:

tbl_user
-------
Id
name

-

tbl_users_jobs
-------
Id
user_id
description

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN计算每位用户的工作(包括没有工作的新用户)。

诀窍是指望tbl_users_jobs中的列,因为新用户的列值将为null,并且将返回零计数。只要确保计算一个不能为空的列;在这种情况下,我选择了tbl_users_jobs.Id,假设它是PK:

SELECT
  tbl_user.Id,
  tbl_user.Name,
  COUNT(tbl_users_jobs.Id) AS JobCount
FROM tbl_user
LEFT JOIN tbl_users_jobs ON tbl_user.Id = tbl_users_jobs.user_id
GROUP BY
  tbl_user.Id,
  tbl_user.Name
ORDER BY JobCount DESC

按谁拥有最少工作的顺序返回结果。您可以将第一行作为用户来获取新作业,但请记住,可能有其他用户具有相同数量的作业 - 换句话说,可能有2或3个或更多用户没有作业。你必须决定如何在它们之间做出选择。