簡體   English   中英

您如何將該查詢轉換為zend framework 2語法?

[英]How can you translate this query into zend framework 2 syntax?

我還沒有弄清楚如何將這個查詢轉換為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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM