sql,java 跪求大神指点

为什么我用企业编号和用户编号查询全部部门及部门下的人数,返回的数据只有一条,
数据库表设计是:用户表和企业表是一对一的,企业表和部门表是一对多的,
以下是我写的sql:

SELECT
    count(c.id) AS userCount,
    b.company_id AS companyId,
    b.`name` AS `name`
FROM
    company_branch b
LEFT JOIN company_personnel_file c ON c.branch_id = b.id
AND c.user_id =55
AND c. STATUS = 1
WHERE
    1 = 1
AND b.company_id =10043
GROUP BY
    b.id
LIMIT 0, 10;
阅读 2.4k
2 个回答

由于你没有说明,企业表和部门表的表名是什么,而且SQL中只出现了一个和企业或部门有关的表,我只能猜测它是部门表。
基于这个假设,来说下你的SQL。你的SQL有以下几个问题:

  1. 你的WHERE 1 = 1是不需要的

  2. LEFT JOIN里的ON语句,是用来限定左联上来的这个表的数据的,而不是用来限定结果数据的,要限定结果数据的话得用WHERE子句

修改后的SQL如下:

SELECT
    COUNT(c.id) userCount,
    b.company_id companyId,
    b.name name
FROM
    company_branch b
LEFT JOIN
    company_personnel_file c ON c.branch_id = b.id
WHERE
    c.user_id = 55 AND
    c.STATUS = 1 AND
    b.company_id = 10043
GROUP BY
    b.id
LIMIT 0, 10;

已解决,是我条件写错了,多谢各位大神

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题