Pregunta:
Fecha: 13-11-2015 06:46:54
(En Español)
le comento a ayer hice una consulta mysql
les comento tengo 2 tablas una se llama agreso y el otro egreso_parcial
en egreso parcial se va guardando los registro casa vez q pagan
se puede pagar el total
se puede pagar en partes
tengo 2 egreso con estas caracteristicas
tabla : egreso
cod_Egreso | pago_proveedor
1 | 1000
2 | 1500
ahora yo decido pagar el primer egreso en 2 partes y el segundo egreso solo en 1
el primer egreso pague en 2 partes
----------------------------------------------
700
300
que sumando da a 1000
el segundo egreso decidi pagar en una parte
-----------------------------------------------------------
1500
expongo como quedaria mi tabla egreso_parcial
tabla : egreso_parcial
codigo_parcial | cod_egreso | monto| concepto
1 | 1 | 700 | 28
2 | 1 | 300 | 28
3 | 2 | 1500 | 28
expongo mi consulta
select eg.cod_egreso, eg.pago_proveedor from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
where epa.concepto=28
y como resultado me da esto
1 | 1000
1 | 1000
2 | 1500
en si yo quiero la suma para esto hago esto
select eg.cod_egreso,sum(eg.pago_proveedor) as totales from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
group by epa.concepto
y como resultado me sales esto
totales
3500
en si yo quiero que me salga 2500 el para esto hice esto
select distinct(eg.cod_egreso),(eg.pago_proveedor) , concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
y como resultado me sales esto
cod_egreso | pago_proveedor | concepto
1 | 1000 | 28
2 | 1500 | 28
entonces pense que ya habia solociando entonces aumente mi sum , y el group by esperando q el total me salga 2500 que seria la suma de 1000 + 1500
entonces hice esto
select distinct(eg.cod_egreso),sum(eg.pago_proveedor) as totales, concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso group by concepto
y como resultado me salio el total 3500
al parecer cuando haces un group by no respeta el distinct , alguien que me pueda ayudar , gracias
entonces decidi hacer estoo
como tenia mi consulta q me devolvia
select distinct(eg.cod_egreso),(eg.pago_proveedor) , concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
y como resultado me sales esto
cod_egreso | pago_proveedor | concepto
1 | 1000 | 28
2 | 1500 | 28
hice esto
pero no veo q la solucion sea por ahii no me explico porque el group by no hae caso al distinct :(
Votos: 0 - Respuestas: 16 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
problema con el group by[Resuelta]
Buenos dias comunidad ,le comento a ayer hice una consulta mysql
les comento tengo 2 tablas una se llama agreso y el otro egreso_parcial
en egreso parcial se va guardando los registro casa vez q pagan
se puede pagar el total
se puede pagar en partes
tengo 2 egreso con estas caracteristicas
tabla : egreso
cod_Egreso | pago_proveedor
1 | 1000
2 | 1500
ahora yo decido pagar el primer egreso en 2 partes y el segundo egreso solo en 1
el primer egreso pague en 2 partes
----------------------------------------------
700
300
que sumando da a 1000
el segundo egreso decidi pagar en una parte
-----------------------------------------------------------
1500
expongo como quedaria mi tabla egreso_parcial
tabla : egreso_parcial
codigo_parcial | cod_egreso | monto| concepto
1 | 1 | 700 | 28
2 | 1 | 300 | 28
3 | 2 | 1500 | 28
expongo mi consulta
select eg.cod_egreso, eg.pago_proveedor from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
where epa.concepto=28
y como resultado me da esto
1 | 1000
1 | 1000
2 | 1500
en si yo quiero la suma para esto hago esto
select eg.cod_egreso,sum(eg.pago_proveedor) as totales from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
group by epa.concepto
y como resultado me sales esto
totales
3500
en si yo quiero que me salga 2500 el para esto hice esto
select distinct(eg.cod_egreso),(eg.pago_proveedor) , concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
y como resultado me sales esto
cod_egreso | pago_proveedor | concepto
1 | 1000 | 28
2 | 1500 | 28
entonces pense que ya habia solociando entonces aumente mi sum , y el group by esperando q el total me salga 2500 que seria la suma de 1000 + 1500
entonces hice esto
select distinct(eg.cod_egreso),sum(eg.pago_proveedor) as totales, concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso group by concepto
y como resultado me salio el total 3500
al parecer cuando haces un group by no respeta el distinct , alguien que me pueda ayudar , gracias
entonces decidi hacer estoo
como tenia mi consulta q me devolvia
select distinct(eg.cod_egreso),(eg.pago_proveedor) , concepto from egreso eg join tabla egreso_parcial epa on eg.cod_egreso=epa.cod_egreso
y como resultado me sales esto
cod_egreso | pago_proveedor | concepto
1 | 1000 | 28
2 | 1500 | 28
hice esto
$listado = $obj->totales();
$total = 0;
foreach($listado as $r){
$total+=$r["pago_proveedor"];
}
pero no veo q la solucion sea por ahii no me explico porque el group by no hae caso al distinct :(
Votos: 0 - Respuestas: 16 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 13-11-2015 09:10:58 Prueba lo siguiente:
SELECT eg.cod_egreso, SUM(eg.pago_proveedor), concepto FROM egreso eg JOIN egreso_parcial epa ON eg.cod_egreso=epa.cod_egreso WHERE epa.concepto=28 GROUP BY epa.cod_egreso;Votos: 0 - Link respuesta -
Fecha: 13-11-2015 09:17:29 Si agregas un alias ya obtienes el resultado como lo quieres:
SELECT eg.cod_egreso, SUM(eg.pago_proveedor) AS pago_proveedor, concepto FROM egreso eg JOIN egreso_parcial epa ON eg.cod_egreso=epa.cod_egreso WHERE epa.concepto=28 GROUP BY epa.cod_egreso;
Arroja:
cod_egreso | pago_proveedor | concepto
1 | 2000 | 28
2 | 1500 | 28
Espero te sirva,
Saludos! Votos: 0 - Link respuesta -
Fecha: 13-11-2015 09:28:55 Si esto no te sirve y quieres que te ayude un poco más entra aquí , modifica lo que necesites y comparte la liga resultante. Votos: 0 - Link respuesta
-
Fecha: 13-11-2015 09:39:57 Hola Ernesto en si lo que necesito es agrupar por concepto ya q necesito la suma de todos los egresos por conceptos
mira haz un group by por concepto y veras que la suma sale 3500 :( Votos: 0 - Link respuesta -
-
-
Fecha: 13-11-2015 09:43:40 ahora por concepto si te das cuenta sin usar el group by sale 2 registro uno de 1000 y el otro por 1500
y ambos son del concepto 28 , entonces si agrupamos por concepto deberia salir 2500 , pero la consulta sale 3500 :(
enlace
saludos Votos: 0 - Link respuesta -
Fecha: 13-11-2015 10:07:53 Ah ok,
Intenta con este:
SELECT eg.cod_egreso, SUM(epa.monto) AS pago_provedor, concepto FROM egreso eg JOIN egreso_parcial epa ON eg.cod_egreso = epa.cod_egreso WHERE epa.concepto=28 GROUP BY epa.concepto;Votos: 0 - Link respuesta -
Fecha: 13-11-2015 10:33:40 Hola ernesto en si mis egresos manejan mas conceptos el ejemplo que puse es con respecto al concepto 28 , pero en si quiero agrupar por conceptos y obtener los totales
por eso que no hago el where , no se si me dejo entender , no entiendo porque cuando hace el group by sucede esto :( Votos: 2 - Link respuesta -
Fecha: 13-11-2015 10:34:42 en si yo puedo hacer una consulta obteniendo los conceptos y dentro de un foreach pasar el concepto a la consulta pero no quiero hacer eso lo veo innecesario Votos: 0 - Link respuesta
-
Fecha: 13-11-2015 11:21:44 Le puedes quitar el WHERE y funciona como quieres.
A mi ya me regresa así:
cod_egreso|pago_provedor|concepto ----------+-------------+--------+ 1 |2500 |28
Votos: 0 - Link respuesta -
Fecha: 13-11-2015 11:31:47 De hecho puedes hacer un subselect que hace exactamente lo que quieres:
SELECT cod_egreso, SUM(pago_proveedor), concepto FROM (SELECT DISTINCT eg.cod_egreso, eg.pago_proveedor, epa.concepto FROM egreso eg JOIN egreso_parcial epa ON eg.cod_egreso = epa.cod_egreso) alias_subselect GROUP BY concepto;Votos: 2 - Link respuesta -
Fecha: 13-11-2015 12:08:17 Hola ernesto en si veo q estas sumando el campo monto del parcial es por eso que te sale pero si sumas el monto de la tabla egreso no
medio raro que cuando ejecutas la consulta te sale 2 registros uno de 1500 y el otro de 2000 ambos son de concepto 28 en teoria si hago un group by por concepto y un sum al campo monto de la tabla egreso deberia de salir 2500 , y sale 3500 Votos: 0 - Link respuesta -
-
Fecha: 13-11-2015 13:32:35 Gracias Ernesto doy por resuelta la pregunta saludos Votos: 1 - Link respuesta
-
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
