Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2018
Jose Manuel Jose Manuel is offline
Miembro
 
Registrado: may 2003
Posts: 112
Poder: 22
Jose Manuel Va por buen camino
PHP – MYSQL: Sumar importes agrupando por meses y separando los años

Hola, estoy empezando con una web donde necesito mostrar en una tabla, los importes acumulados por meses de 2 años.

-------------------------------------
|mes | gasto 2017 | gasto 2018 |
------------------------------------
|ENERO | 1.255,50 | 1.750,70 |
------------------------------------
|FEBRERO | 3.444,50 | 3.222,20 |
------------------------------------
|MARZO | 1.544,20 | 0,0 |
------------------------------------

Con esta instrucción obtengo los datos de un año, pero no veo los 2 año juntos

Código PHP:
$select=$db->prepare('
SELECT Month(f_fecha) as Month, sum(n_importe) as n_importe FROM contabilidad WHERE YEAR(f_fecha) = 2017 and n_importe<0 Group By Month'
)    ;
$select->execute();    
foreach (
$select as $row) {
echo 
"<tr>"
echo 
"<td>" $row['Month'] . "</td>";
echo 
"<td>" .number_format($row['n_importe'], 2',''.')."</td>";
echo 
"<td>" .number_format($row['n_importe2'], 2',''.')."</td>";   // aquí debería ir la suma del año 2018

echo "</tr>";     
}            
echo 
"</tr>";        
echo 
"</table>";    
echo 
"</div>";    
?> 
Responder Con Cita
  #2  
Antiguo 11-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Jose Manuel Ver Mensaje
pero no veo los 2 año juntos
¿Juntos? ¿uno al lado del otro o sumados ambos?
Porque, obviamente, con ese select estás sacando solamente los del año 2017
Código SQL [-]
SELECT Month(f_fecha) as Month, sum(n_importe) as n_importe 
FROM contabilidad 
WHERE YEAR(f_fecha) = 2017 
and n_importe<0 
Group By Month
Responder Con Cita
  #3  
Antiguo 11-08-2018
Jose Manuel Jose Manuel is offline
Miembro
 
Registrado: may 2003
Posts: 112
Poder: 22
Jose Manuel Va por buen camino
Lo que pretendo es hacer una tabla que muestre los importes de 12 meses y 2 años. Efectivamente el ejemplo del SELECT solo me muestra un año, he intentado hacerlo con UNION y otras formas, pero no me sale.

Mi pregunta es, partiendo de un tabla donde se guardan todos los apuntes contables, se puede mostrar esa información directamente, o debo hacerlo con arrays, primero pasando un año y luego el otro.

Gracias y un saludo.
Responder Con Cita
  #4  
Antiguo 11-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues depende de cómo estén guardados esos datos, pero si no pones la estructura de la tabla, poco podemos adivinar.
Responder Con Cita
  #5  
Antiguo 12-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tratando de adivinar, más o menos puede servirte algo así:
Código SQL [-]
select sum(saldo), extract(month from fechaasiento), ejercicio
from tbApuntes
where ejercicio=2016
group by extract(month from fechaasiento), ejercicio
union all
select sum(saldo), extract(month from fechaasiento), ejercicio
from tbApuntes
where ejercicio=2017
group by extract(month from fechaasiento), ejercicio
Responder Con Cita
  #6  
Antiguo 12-08-2018
Jose Manuel Jose Manuel is offline
Miembro
 
Registrado: may 2003
Posts: 112
Poder: 22
Jose Manuel Va por buen camino
Gracia por tu respuesta,

Esta instrucción, es similar a una de las que he probado.

Código PHP:
$select=$db->prepare('
SELECT MonthName(f_fecha) as Month, year(f_fecha) as Year, sum(n_importe) as n_importe 
FROM contabilidad  
Group By YEAR(f_fecha), Month(f_fecha)'
)    ; 
Creo que para obtener lo que quiero deberia incluir un subselect para que me creará el campo del año actual.

Pongo una imagen de lo que sale con ambas instrucciones y lo que yo quiero conseguir.



muestro el codigo y la tabla donde quiero ponerlo.
Código PHP:
$select=$db->prepare('
SELECT MonthName(f_fecha) as Month, year(f_fecha) as Year, sum(n_importe) as n_importe FROM contabilidad WHERE  n_importe<0 and year(f_fecha)=2017 Group By YEAR(f_fecha), Month(f_fecha)
union all
SELECT MonthName(f_fecha) as Month, year(f_fecha) as Year, sum(n_importe) as n_importe FROM contabilidad WHERE  n_importe<0 and year(f_fecha)=2018 Group By YEAR(f_fecha), Month(f_fecha)'
);
        
$select->execute();    
foreach (
$select as $row) {
echo 
"<tr>"
echo 
"<td>" $row['Month'] . "</td>";
echo 
"<td>" .number_format($row['n_importe'], 2',''.')."</td>";
echo 
"<td>" .number_format($row['n_importe2'], 2',''.')."</td>";    // me falta este campo
echo "</tr>";     

Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Calcular EDAD en años, meses y dias de una Persona MaMu Trucos 6 03-09-2013 00:57:24
Contar y sumar importes de firebird MartinS SQL 4 09-07-2012 11:22:28
Cómo se determina la cantidad de años y meses.. ronimaxh Varios 4 07-05-2007 23:12:03
Consulta con meses y años Gabriel2 SQL 3 05-09-2005 19:31:56
agrupar por dias meses y años en Interbase????? mguixot Conexión con bases de datos 0 03-10-2003 20:31:08


La franja horaria es GMT +2. Ahora son las 01:13:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi