Php MySQL内部连接来自另一个表的计数

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 =

我试图在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 = '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是一种常见的做法,性能稍高一些。