Visual Basic - Realizar Consulta a BD

Life is soft - evento anual de software empresarial
 
Vista:

Realizar Consulta a BD

Publicado por Jazzz (134 intervenciones) el 21/10/2010 16:41:13
Tengo una base de datos SQL Server 7 para un programa de punto de venta, tengo una tabla de Articulos, una tabla de detallesalida y una de detalleentrada, obvio hay mas pero con estas necesito una consulta:

Tengo que hacer un listado de todos los articulos y poner la cantidad de entradas que tuvo y la cantidad de salidas en cada mes, presentando un año completo.

Las tablas no estan relacionadas, y la estructura necesaria segun yo, para la consulta seria la siguiente:

Articulos: llave primaria campos--> subcategoria y codarticulo
Detallesalida: llave primaria campos--> tiporegistro (indica si la factura es de credito o contado o nula), subcategoria,codarticulo,mes,año
Detalleentrada: llave primaria campos--> tiporegistro (indica si la entrada es un ajuste, una compra o una devolucion, en este caso me interesa el tipo devolucion), subcategoria,codarticulo,mes,año

La consulta la quiero cargar en un msflexgrid, y puedo realizarlo por el metodo largo y recorrer los articulos, luego preguntar salidas y entradas, pero el problema es que el tiempo de respuesta de la consulta se alarga enormemente.

La consulta la realizo de la siguiente manera

SELECT a.subcategoria, a.codarticulo, ISNULL(SUM(b.cantidad), 0),ISNULL(SUM(c.cantidad), 0)
FROM Articulos AS a, detallesalidaaplicada AS b,detalleentrada as c WHERE a.subcategoria = b.subcategoria AND a.codarticulo = b.codarticulo AND a.subcategoria = c.subcategoria AND a.codarticulo = c.codarticulo AND b.tiporegistro <> 'N' and c.tiporegistro = 'D' GROUP BY a.subcategoria, a.codarticulo ORDER BY a.subcategoria, a.codarticulo

Primero los valores que me muestra no coiciden con lo que realmente es, segundo si el articulo no esta presente en detallesalida o detalleentrada, pues no aparece en los resultados cuando yo lo que necesito en realidad es que me muestre el articulo y salidas y entradas con valor cero en el caso de que no apareciera como dije en dichas tablas.

Gracias de atemano...
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