MySQL - urge ayuda en consulta avanzada

   
Vista:

urge ayuda en consulta avanzada

Publicado por saga (2 intervenciones) el 20/01/2012 00:48:28
el problema es el siguiente:

hago un programa para generar reportes, los datos del reporte los obtengo de las siguientes tablas con los campos:

presupuestos
cuenta PK
scuenta PK
sscuenta PK
ssscuenta PK
sssscuenta PK
importe1
importe2

saldos
cuenta PK
scuenta PK
sscuenta PK
ssscuenta PK
sssscuenta PK
saldo1
saldo2

en mi programa el usuario selecciona el nivel de detalle que quiere sobre su reporte, por lo que los datos los puedo agrupar:
si nivel_detalle=1 agrupar por cuenta
si nivel_detalle=2 agrupar por cuenta, scuenta
si nivel_detalle=3 agrupar por cuenta, scuenta, sscuenta
si nivel_detalle=4 agrupar por cuenta, scuenta, sscuenta, ssscuenta
si nivel_detalle=5 agrupar por cuenta, scuenta, sscuenta, ssscuenta, sssscuenta

los datos se agrupan y se suman los importes y los saldos
existe la posibilidad de que existan registros en presupuestos y en saldos no y tambien
existe la posibilidad de que existan registros en saldos y en presupuestos no
el full join no me sirve, me marca error de sintaxis (no reconoce el comando)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

urge ayuda en consulta avanzada

Publicado por martinmaximilianoflores (150 intervenciones) el 20/01/2012 19:26:55
mmmmm podrias hacer un consulta donde usas LEFT JOIN a una de las tablas y otra consulta igual pero cambias el LEFT JOIN por un RIGHT JOIN y despues los juntas con un UNION ALL.
Es algo rebuscado pero si la especificacion de requimientos termino en esa estructura no veo otra solucion.



SAludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

urge ayuda en consulta avanzada

Publicado por saga (2 intervenciones) el 24/01/2012 20:13:50
parece que si me di a entender.. por lo menos eso me alivia y si, casi exactamente esa fue mi solucion, dos consultas unidas por un UNION ALL, aunque mis tablas reales tenian nombres un poco diferentes y mas campos esto quedo solucionado mas o menos asi:
select concat(sal.cuenta,'|', sal.SCuenta,'|',sal.sscuenta,'|', sal.ssscuenta,'|', sal.SSSSCuenta) Clave, 'saldos' Tabla,

(select cat.Descripcion
from $Tabla_Catalogo
where cat.cuenta=sal.cuenta and cat.scuenta=sal.scuenta and cat.sscuenta=sal.sscuenta and cat.ssscuenta=sal.ssscuenta and cat.sssscuenta=sal.sssscuenta and tiporegistro=2) as Descripcion_Cuenta,

Sum(sal.Saldos01) as ENERO, Sum(sal.Saldos02) as FEBRERO, Sum(sal.Saldos03) as MARZO, Sum(sal.Saldos04) as ABRIL, Sum(sal.Saldos05) as MAYO,
Sum(sal.Saldos06) as JUNIO, Sum(sal.Saldos07) as JULIO, Sum(sal.Saldos08) as AGOSTO, Sum(sal.Saldos09) as SEPTIEMBRE, Sum(sal.Saldos10) as OCTUBRE, Sum(sal.Saldos11) as NOVIEMBRE, Sum(sal.Saldos12) as DICIEMBRE
from $Tabla_Saldos
where sal.cuenta=$cuenta
group by $salDetalle_Reporte

UNION ALL

select concat(ppto.cuenta,'|', ppto.SCuenta,'|', ppto.sscuenta,'|', ppto.ssscuenta,'|', ppto.SSSSCuenta), 'presupuestos' Tabla,

(select cat.Descripcion
from $Tabla_Catalogo
where cat.cuenta=ppto.cuenta and cat.scuenta=ppto.scuenta and cat.sscuenta=ppto.sscuenta and cat.ssscuenta=ppto.ssscuenta and cat.sssscuenta=ppto.sssscuenta and tiporegistro=2),

Sum(ppto.Importe1), Sum(ppto.Importe2), Sum(ppto.Importe3), Sum(ppto.Importe4), Sum(ppto.Importe5),
Sum(ppto.Importe6), Sum(ppto.Importe7), Sum(ppto.Importe8), Sum(ppto.Importe9), Sum(ppto.Importe10),
Sum(ppto.Importe11), Sum(ppto.Importe12)

from $Tabla_Presupuestos
where ppto.cuenta=$cuenta
group by $pptoDetalle_Reporte
order by Clave, Tabla



muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar