代码点火器:在查询中显示两个数据,具有不同的和计数


Codeigniter: display two data in query with distinct and count

我尝试使用codeigniter显示一个查询的两个数据。

$query = "SELECT  count(distinct p.id_paciente), count(c.pacientes_id_paciente) FROM paciente p, cita c WHERE p.id_paciente=c.pacientes_id_paciente AND p.usuarios_id_usuario=43 AND p.aseguradoras_id_aseguradora=8 AND c.dia_cita>='2015-04-16' AND c.dia_cita<='2015-04-16'";
    $sql = $this->db->query($query);

如何显示计数(不同的p.id_paciente)和计数(c.pacientes_id_paciente)的两个结果

我尝试使用

foreach ($sql->result_array() as $row)

{

echo $row['id_paciente'];
echo $row['pacientes_id_paciente'];

}

但只显示数组的内容...

谢谢

您的代码存在几个问题:

  1. 使用别名命名结果集中的列,以便以后能够按名称对列进行寻址
    SELECT  COUNT(distinct p.id_paciente) AS count1, ...
                                             ^^^^^^
  1. 不要自己插值查询字符串。使用 Codeigniter 的查询绑定

  2. 这可能与您无关,但如果dia_cita有时间成分(即属于datetime类型),您可能需要将WHERE条件更改为

    c.dia_cita >= ? AND c.dia_cita < ? + INTERVAL 1 DAY
    不需要
  1. foreach循环。使用此查询,您始终只能获得一行。因此,请使用 Codeigniter 的 row()row_array() .

话虽如此,您的代码可能看起来像

$sql = "
    SELECT COUNT(DISTINCT p.id_paciente) AS count1, 
           COUNT(c.pacientes_id_paciente) AS count2 
      FROM paciente p JOIN cita c 
        ON p.id_paciente = c.pacientes_id_paciente
     WHERE p.usuarios_id_usuario = ? 
       AND p.aseguradoras_id_aseguradora = ? 
       AND c.dia_cita >= ? 
       AND c.dia_cita < ? + INTERVAL 1 DAY
";
$bindings = array(43, 8, '2015-04-16', '2015-04-16')
$row = $this->db
    ->query($sql, $bindings)
    ->row_array();
echo $row['count1'], $row['count2'];