gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:50:17 24 4
gpt4 key购买 nike

我还没弄清楚,如何将此查询转换为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com