Php MySQL内部连接来自另一个表的计数
我试图在MySQL中执行一个SELECT查询,该查询还将在另一个表中进行计数,并将答案加入到我的初始表中 餐桌上的人 id |姓名|头发|颜色|工作| id 桌上作业 id |职务|姓名Php MySQL内部连接来自另一个表的计数,php,mysql,Php,Mysql,我试图在MySQL中执行一个SELECT查询,该查询还将在另一个表中进行计数,并将答案加入到我的初始表中 餐桌上的人 id |姓名|头发|颜色|工作| id 桌上作业 id |职务|姓名 SELECT * FROM job j INNER JOIN (SELECT COUNT(job_id) AS totals FROM people p WHERE p.job_id='1') ON j.count = totals WHERE id =
SELECT *
FROM job j
INNER JOIN (SELECT COUNT(job_id) AS totals
FROM people p
WHERE p.job_id='1')
ON j.count = totals
WHERE id = '1'
ORDER BY id ASC
因此,我试图通过id从我的作业表中选择上述查询,并在人员表中进行计数,然后将列计数添加到我的作业结果中。您不必在子查询中进行计数:您可以直接选择计数,然后按分组。此外,您不必手动精确计算人员作业id:连接直接在两个表字段之间进行
SELECT j.id, j.job_name, count(p.id) as nb_people
FROM job j
INNER JOIN people p ON p.job_id = j.id
WHERE j.id = '1'
GROUP BY j.id, j.job_name
ORDER BY id ASC
查看MySQL聚合函数文档:
或许可以再看一下JOIN文档:您不必在子查询中进行计数:您可以直接选择count,然后按分组。此外,您不必手动精确计算人员作业id:连接直接在两个表字段之间进行
SELECT j.id, j.job_name, count(p.id) as nb_people
FROM job j
INNER JOIN people p ON p.job_id = j.id
WHERE j.id = '1'
GROUP BY j.id, j.job_name
ORDER BY id ASC
查看MySQL聚合函数文档:
也许再看一下JOIN文档:Upvoted,但我会将其设置为COUNTDISTINCT p.id,以防万一:我个人更喜欢COUNT1,但你是对的,这对初学者来说更清楚。我编辑我的答案,谢谢。@OlivierH括号内的1代表什么?例如,如果您从“人”中选择1,它将为找到的每一行返回一个“1”字符。在这里,使用COUNT1或COUNTp.id做同样的事情:计算找到的行数。使用1是一种常见的做法,性能稍高一些。向上投票,但我会将其设置为COUNTDISTINCT p.id,以防万一:我个人更喜欢COUNT1,但你是对的,这对初学者来说更清晰。我编辑我的答案,谢谢。@OlivierH括号内的1代表什么?例如,如果您从“人”中选择1,它将为找到的每一行返回一个“1”字符。在这里,使用COUNT1或COUNTp.id做同样的事情:计算找到的行数。使用1是一种常见的做法,性能稍高一些。