Consulta SQL con Left Join
Publicado por Juan Suarez (2 intervenciones) el 07/04/2021 05:29:21
Hola,
Resulta que estoy intentando construir una consulta SQL usando joins para traer todos los registros de la tabla Referencias, luego de cada Referencia se debe determinar que cantidades estan en Pedidos, Compras y tambien en Pedidos pero de determinado Cliente. Estoy haciendo la consulta de la siguiente manera:
--Consulta solo Referencias
SELECT
Referencias.Referencia,
Referencias.Descripcion,
Referencias."Punto Minimo",
Referencias."Saldo Inicial Mes" + Referencias."Entradas Mes" - Referencias."Salidas Mes" AS KardexRef
FROM Referencias
WHERE Referencias.Bodega='01' and Referencias."Linea Referencia" ='14' AND Referencias."Estado Articulo" <> '9'
ORDER BY Referencias.Descripcion, Referencias.Referencia
Retorna 20.440 registros
Al agregar los Join para consultar Pedidos y las conpras de cada referencia, funciona correctamente, trae la misma cantidad de registros, 20.440
SELECT
Referencias.Referencia,
Referencias.Descripcion,
Referencias."Punto Minimo",
Referencias."Saldo Inicial Mes" + Referencias."Entradas Mes" - Referencias."Salidas Mes" AS KardexRef,
"Detalle Pedidos".PDI as PDIF,
"Detalle Compras".OCI as OCIF--,
--D.PDIEX as PDIEXF
FROM Referencias
left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDI from "Detalle Pedidos" group by "Detalle Pedidos".Referencia) "Detalle Pedidos" on Referencias.Referencia = "Detalle Pedidos".Referencia
left join (SELECT "Detalle Compras".Referencia, sum("Detalle Compras"."Cantidad Pedida" - "Detalle Compras"."Cantidad Facturada") AS OCI from "Detalle Compras" group by "Detalle Compras".Referencia) "Detalle Compras" on Referencias.Referencia = "Detalle Compras".Referencia
--left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDIEX from "Detalle Pedidos" WHERE ("Detalle Pedidos".Cliente ='90027' or "Detalle Pedidos".Cliente ='70222') group by "Detalle Pedidos".Referencia) AS D on Referencias.Referencia = "Detalle Pedidos".Referencia
WHERE Referencias.Bodega='01' and Referencias."Linea Referencia" ='14' AND Referencias."Estado Articulo" <> '9'
ORDER BY Referencias.Descripcion, Referencias.Referencia
Al retirar los comentarios del tercer Join que tiene un condicional Where para el Codigo del cliente me aumenta la cantidad de reigistros, me retorna 21.545 registros. El join al cual hago referencia esta comentado en el script anterior, sin embargo hago referencia a el:
left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDIEX from "Detalle Pedidos" WHERE ("Detalle Pedidos".Cliente ='90027' or "Detalle Pedidos".Cliente ='70222') group by "Detalle Pedidos".Referencia) AS D on Referencias.Referencia = "Detalle Pedidos".Referencia
Cual puede ser el problema para que esta consulta retorne mas informacion cuando retiro el comentario del tercer join ?
Agradezco sus comentarios!
Juan Suárez.
Resulta que estoy intentando construir una consulta SQL usando joins para traer todos los registros de la tabla Referencias, luego de cada Referencia se debe determinar que cantidades estan en Pedidos, Compras y tambien en Pedidos pero de determinado Cliente. Estoy haciendo la consulta de la siguiente manera:
--Consulta solo Referencias
SELECT
Referencias.Referencia,
Referencias.Descripcion,
Referencias."Punto Minimo",
Referencias."Saldo Inicial Mes" + Referencias."Entradas Mes" - Referencias."Salidas Mes" AS KardexRef
FROM Referencias
WHERE Referencias.Bodega='01' and Referencias."Linea Referencia" ='14' AND Referencias."Estado Articulo" <> '9'
ORDER BY Referencias.Descripcion, Referencias.Referencia
Retorna 20.440 registros
Al agregar los Join para consultar Pedidos y las conpras de cada referencia, funciona correctamente, trae la misma cantidad de registros, 20.440
SELECT
Referencias.Referencia,
Referencias.Descripcion,
Referencias."Punto Minimo",
Referencias."Saldo Inicial Mes" + Referencias."Entradas Mes" - Referencias."Salidas Mes" AS KardexRef,
"Detalle Pedidos".PDI as PDIF,
"Detalle Compras".OCI as OCIF--,
--D.PDIEX as PDIEXF
FROM Referencias
left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDI from "Detalle Pedidos" group by "Detalle Pedidos".Referencia) "Detalle Pedidos" on Referencias.Referencia = "Detalle Pedidos".Referencia
left join (SELECT "Detalle Compras".Referencia, sum("Detalle Compras"."Cantidad Pedida" - "Detalle Compras"."Cantidad Facturada") AS OCI from "Detalle Compras" group by "Detalle Compras".Referencia) "Detalle Compras" on Referencias.Referencia = "Detalle Compras".Referencia
--left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDIEX from "Detalle Pedidos" WHERE ("Detalle Pedidos".Cliente ='90027' or "Detalle Pedidos".Cliente ='70222') group by "Detalle Pedidos".Referencia) AS D on Referencias.Referencia = "Detalle Pedidos".Referencia
WHERE Referencias.Bodega='01' and Referencias."Linea Referencia" ='14' AND Referencias."Estado Articulo" <> '9'
ORDER BY Referencias.Descripcion, Referencias.Referencia
Al retirar los comentarios del tercer Join que tiene un condicional Where para el Codigo del cliente me aumenta la cantidad de reigistros, me retorna 21.545 registros. El join al cual hago referencia esta comentado en el script anterior, sin embargo hago referencia a el:
left join (SELECT "Detalle Pedidos".Referencia, sum("Detalle Pedidos"."Cantidad Pedida" - "Detalle Pedidos"."Cantidad Facturada") AS PDIEX from "Detalle Pedidos" WHERE ("Detalle Pedidos".Cliente ='90027' or "Detalle Pedidos".Cliente ='70222') group by "Detalle Pedidos".Referencia) AS D on Referencias.Referencia = "Detalle Pedidos".Referencia
Cual puede ser el problema para que esta consulta retorne mas informacion cuando retiro el comentario del tercer join ?
Agradezco sus comentarios!
Juan Suárez.
Valora esta pregunta


0