php - Mysql查询获取总 child 数?

标签 php mysql

我有 4 个表,需要从数据库中获取用户信息、州名称、分支名称和子级总数。

我使用了下面的sql

SELECT  `user_id` ,  `user_name` , state_name, branch_name
FROM  `user` 
LEFT JOIN state ON state_id = user_state_id
LEFT JOIN branch ON branch_id = user_branch_id

但是我还需要获取每个用户的 child 数量,所以我使用了下面的查询

SELECT  `user_id` ,  `user_name` , state_name, branch_name, count(child_id)
FROM  `user` 
LEFT JOIN state ON state_id = user_state_id
LEFT JOIN branch ON branch_id = user_branch_id
LEFT JOIN child on parent_id = user_id  group by user_id

我需要问一个问题,在整个查询中使用 group by 进行计数是否可以,这是否会影响来自该查询的联接的数据

最佳答案

您的 JOIN 涉及三个表。当您按 user_id 进行分组时,每个 user_id 只会输出一行。让我们看第一个表状态。如果用户只有一种状态,那么 GROUP BY 不会导致任何问题,因为这一行将出现在输出中。同样适用于分支机构。

对于最后一个表“子表”,如果用户有多个子表(显然根据您的查询),则输出中将只显示一行。由于您在“SELECT”中单独使用 count(child_id) ,因此该计数将单独出现在输出中。如果“子”表中的 SELECT 中有除“count”之外的任何其他列,则只有第一个子表中的值才会出现在输出中。

只要状态表和分支表中每个用户只有一行,输出就不会受到 GROUP BY 的影响。

关于php - Mysql查询获取总 child 数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582471/

相关文章:

php - Opencart product.tpl 未更新

mysql - 计数中的最小值

php - 正则表达式将 2 个反斜杠替换为 3 个

php - FosUserBundle不将数据保存在mongodb数据库中

php - 为什么多次上传没有插入数据库

php - 如何在使用 mySQLi 的 SQL 查询中使用带有表对象的 $result 变量

php - 使用 PHP 获取 CSV 文件的第一行并使用数据创建 MySQL 表

MySQL自动用空格分割关键字

php - 关闭并重新打开后继续填写 HTML 表单

php - WooCommerce 预购插件