为了账号安全,请及时绑定邮箱和手机立即绑定

无法合并三个 select 语句的结果

无法合并三个 select 语句的结果

PHP
一只萌萌小番薯 2023-03-11 16:29:39
我试图同时从这三个 select 语句中获得结果,但我无法这样做。所以请帮助我纠正我的错误。如果您发现我的英语或问题方法不好,请不要给我差评。 $sql = $conn->prepare("SELECT Count(c.c_id) from complaints c, users u,cell_num cn where c.status=? AND c.u_id_fk=u.u_id AND u.u_id=cn.u_id_fk"); $sql->bind_param("i",$statOpen); $sql .= $conn->prepare("SELECT Count(c.c_id) from complaints c, users u,cell_num cn where c.status=? AND c.u_id_fk=u.u_id AND u.u_id=cn.u_id_fk"); sql->bind_param("i",$statProgress); $sql .= $conn->prepare("SELECT Count(c.c_id) from complaints c, users u,cell_num cn where c.status=? AND c.u_id_fk=u.u_id AND u.u_id=cn.u_id_fk"); $sql->bind_param("i",$statClosed);                        $sql->execute();                        $sql->store_result();                        if($sql->num_rows > 0)                        {                            $sql->bind_result($c_id);                            while( $sql->fetch() )                            {                                $user[] = array(                               'c_id'=>$c_id                             );                            }                            echo json_encode($user);                            $sql->close();                        }
查看完整描述

2 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以进行条件聚合:


select 

    sum(c.status = ?) cnt_open,

    sum(c.status = ?) cnt_progress,

    sum(c.status = ?) cnt_closed

from complaints c

inner join users u on u.u_id = c.u_id_fk

inner join cell_num cn on cn.u_id_fk = u.u_id

此查询一次接受三个参数,它们对应于您传递给三个单独查询的三个值。


请注意,我修改了查询以使用标准连接(使用on关键字)而不是老式的隐式连接(在子句中使用逗号from):不应在新代码中使用这种陈旧的语法。


where您可以通过添加一个对三个可能的 es 进行过滤的子句来提高查询效率status(这需要将每个参数传递两次):


where c.status in (?, ?, ?)


查看完整回答
反对 回复 2023-03-11
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

你可以这样做,它更优化


select c.statut,count(c.c_id)

from complaints c

inner join users u on u.u_id = c.u_id_fk

inner join cell_num cn on cn.u_id_fk = u.u_id

where c.status in (?, ?, ?)

group by c.status


查看完整回答
反对 回复 2023-03-11
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信