php - 如何将此查询转换为 zend Framework 2 语法?

标签 php mysql zend-framework zend-framework2 zend-db

我还没弄清楚,如何将此查询转换为 zend 框架语法,任何帮助将不胜感激。

SELECT p.idProyecto,p.nombre, p.nombre, e.nombre, e.apellido, sum(Respuesta.estimado) as estimado, DATE_FORMAT(p.fechaInicio, '%Y/%m/%d') as inicio, DATE_FORMAT(p.fechaFin, '%Y/%m/%d') as fin, sum(DetailTotals.Total) as total
FROM Actividad as a
LEFT JOIN
(
   SELECT a2.idActividad, sum(ar2.tiempoEstimado) as estimado
   FROM actividadResponsable as ar2
   JOIN actividad as a2 on ar2.idActividad=a2.idActividad
   WHERE a2.fechaInicio>='2014-10-13' and a2.fechaInicio<='2014-10-19'
   GROUP BY a2.idProyecto
) AS Respuesta ON Respuesta.idActividad=a.idActividad
LEFT JOIN ActividadPlaneada as ap On ap.idActividad = Respuesta.idActividad
LEFT JOIN tipoActividad as ta on ta.idTipoActividad= ap.idTipoActividad
LEFT JOIN proyecto as p ON p.idProyecto=a.idProyecto
LEFT JOIN
(
  SELECT *, Sum(r2.tiempoRegistrado) As Total
  FROM registro As r2
  WHERE r2.fechaRegistro>='2014-10-13' and r2.fechaRegistro<='2014-10-19'
  GROUP BY r2.idActividad
) As DetailTotals ON DetailTotals.idActividad=a.idActividad
LEFT JOIN Empleado AS e ON p.creador = e.idEmpleado
GROUP BY a.idProyecto;

最佳答案

我实际上可以构建查询,它是这样的。

$left_join_1 = $sql->select();
$left_join_1->from(array('ar2' => 'ActividadResponsable'));
$left_join_1->columns(array(new \Zend\Db\Sql\Expression('a2.idActividad, sum(ar2.tiempoEstimado) as estimado')));
$left_join_1->join(array('a2' => 'Actividad'),  "ar2.idActividad=a2.idActividad", array());
$left_join_1->where->greaterThanOrEqualTo('a2.fechaInicio', $inicio);
$left_join_1->where->lessThanOrEqualTo('a2.fechaInicio', $fin);
$left_join_1->group(array('a2.idProyecto'));

$left_join_2 = $sql->select();
$left_join_2->from(array('r2' => 'Registro'));
$left_join_2->columns(array(new \Zend\Db\Sql\Expression('*, Sum(r2.tiempoRegistrado) as Total')));
$left_join_2->where->greaterThanOrEqualTo('r2.fechaRegistro', $inicio);
$left_join_2->where->lessThanOrEqualTo('r2.fechaRegistro', $fin);
$left_join_2->group(array('r2.idActividad'));

$query = $sql->select();
$query->from(array('a' => 'Actividad'));
$query->columns(array(new \Zend\Db\Sql\Expression('p.idProyecto,p.nombre, p.nombre, e.nombre, e.apellido, sum(Respuesta.estimado) as estimado, p.fechaInicio as inicio, p.fechaFin as fin, sum(DetailTotals.Total) as t_real')));
$query->join(array('Respuesta' => $left_join_1),   'Respuesta.idActividad=a.idActividad', array(), 'left');
$query->join(array('ap' => 'ActividadPlaneada'),   'ap.idActividad = Respuesta.idActividad', array(), 'left');
$query->join(array('ta' => 'TipoActividad'),   'ta.idTipoActividad= ap.idTipoActividad', array(), 'left');
$query->join(array('p' => 'Proyecto'),   'p.idProyecto=a.idProyecto', array(), 'left');
$query->join(array('DetailTotals' => $left_join_2),   'DetailTotals.idActividad=a.idActividad', array(), 'left');
$query->join(array('e' => 'Empleado'),   'p.creador = e.idEmpleado', array(), 'left');
$query->group(array('a.idProyecto'));
$statement = $sql->prepareStatementForSqlObject($query);
$result = $statement->execute();
$records = array();
foreach ($result as $return) {
  $records[] = $return;
}
return $records;

关于php - 如何将此查询转换为 zend Framework 2 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26638022/

相关文章:

php - 返回新响应返回空数据

php登录脚本问题

python - 使用 python-apt 安装 mysql-server

php - 如何创建 ZF3 控制台应用程序

php - Zend Opcache 自动刷新(重置?)

php - INSERT 表行到另一个表

php - Laravel 4 文件上传

php - 如何执行存储在 MySQL 数据库中的 PHP?

java - 如何停止正在运行的 mysql 查询

zend 格式的 mysql 查询