Problema con Query

16/06/2009 - 23:30 por bavaro | Informe spam
Estimados :
No logro resolver este problema, tengo tres tablas :
InVinicialE
InVinicialS
InvIni1

Esta Query funciona cuando encuentra registros en invIni1, sino no
entrega nada en las fórmulas del select.
Como hago para que si no encuentra registro en Invini1 me deje 0 en
los campos del InvIni1 que estoy ocupando en la suma, para así
entregar el resultado de la suma y resta?
.
Estoy buscando un producto en especial que si tiene datos en
InvincialE y InvincialS, pero no está en la tabla InvIni1.

SELECT dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
(dbo.INVINI1.IniValOtr, 0)
+ dbo.InVInicialE.Entrada$ -
dbo.InvInicialS.Salida$ AS InvI$
FROM dbo.InVInicialE LEFT OUTER JOIN
dbo.INVINI1 ON dbo.InVInicialE.PRDCOD dbo.INVINI1.PrdCod RIGHT OUTER JOIN
dbo.InvInicialS ON dbo.INVINI1.PrdCod dbo.InvInicialS.PRDCOD
WHERE (dbo.INVINI1.PrdCod = '441002510094')

Preguntas similare

Leer las respuestas

#1 David Austria
17/06/2009 - 01:12 | Informe spam
¡Hola!
Revisa bien que en tu consulta tu tabla principal sea INVINI1.
También usa el ISNULL en todos los campos para garantizar no tener
valores nulos en la consulta.

Intenta lo siguiente:

SELECT INVINI1.PrdCod,
ISNULL(INVINI1.IniCan, 0) +
ISNULL(InVInicialE.EntradaU, 0) - ISNULL(InvInicialS.SalidaU, 0) AS
InvIU,
ISNULL(INVINI1.IniValOtr, 0) +
ISNULL(InVInicialE.Entrada, 0) - ISNULL(InvInicialS.Salida, 0) AS InvI
FROM
dbo.InVInicialE RIGHT OUTER JOIN
dbo.InvInicialS RIGHT OUTER JOIN
dbo.INVINI1 ON
dbo.InvInicialS.PrdCod = dbo.INVINI1.PrdCod ON
dbo.InVInicialE.PrdCod = dbo.INVINI1.PrdCod
WHERE (dbo.INVINI1.PrdCod = '441002510094')

Saludos
David Austria



On 16 jun, 16:30, bavaro wrote:
Estimados :
No logro resolver este problema, tengo tres tablas :
InVinicialE
InVinicialS
InvIni1

Esta Query funciona cuando encuentra registros en invIni1, sino no
entrega nada en las fórmulas del select.
Como hago para que si no encuentra registro en Invini1 me deje 0 en
los campos del InvIni1 que estoy ocupando en la suma, para así
entregar el resultado de la suma y resta?
.
Estoy buscando un producto en especial que si tiene datos en
InvincialE y InvincialS, pero no está en la tabla InvIni1.

SELECT     dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
(dbo.INVINI1.IniValOtr, 0)
                      + dbo.InVInicialE.Entrada$ -
dbo.InvInicialS.Salida$ AS InvI$
FROM         dbo.InVInicialE LEFT OUTER JOIN
                      dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
                      dbo.InvInicialS ON dbo.INVINI1.PrdCod > dbo.InvInicialS.PRDCOD
WHERE     (dbo.INVINI1.PrdCod = '441002510094')
Respuesta Responder a este mensaje
#2 bavaro
17/06/2009 - 14:08 | Informe spam
David, gracias por responder, me sigue no entregando datos, si ejecuto
la vistas InvInicialE y InvInicialS por si solas me entrega datos para
ese producto, pero al enlazar con la tabla InvIni1 (el producto no
está en esta tabla) no me muestra nada, cuál podría ser el problema?

On 16 jun, 19:12, David Austria wrote:
¡Hola!
Revisa bien que en tu consulta tu tabla principal sea INVINI1.
También usa el ISNULL en todos los campos para garantizar no tener
valores nulos en la consulta.

Intenta lo siguiente:

SELECT INVINI1.PrdCod,
ISNULL(INVINI1.IniCan, 0) +
ISNULL(InVInicialE.EntradaU, 0) - ISNULL(InvInicialS.SalidaU, 0) AS
InvIU,
ISNULL(INVINI1.IniValOtr, 0) +
ISNULL(InVInicialE.Entrada, 0) - ISNULL(InvInicialS.Salida, 0) AS InvI
FROM
    dbo.InVInicialE RIGHT OUTER JOIN
    dbo.InvInicialS RIGHT OUTER JOIN
    dbo.INVINI1 ON
    dbo.InvInicialS.PrdCod = dbo.INVINI1.PrdCod ON
    dbo.InVInicialE.PrdCod = dbo.INVINI1.PrdCod
WHERE (dbo.INVINI1.PrdCod = '441002510094')

Saludos
David Austria

On 16 jun, 16:30, bavaro wrote:

> Estimados :
> No logro resolver este problema, tengo tres tablas :
> InVinicialE
> InVinicialS
> InvIni1

> Esta Query funciona cuando encuentra registros en invIni1, sino no
> entrega nada en las fórmulas del select.
> Como hago para que si no encuentra registro en Invini1 me deje 0 en
> los campos del InvIni1 que estoy ocupando en la suma, para así
> entregar el resultado de la suma y resta?
> .
> Estoy buscando un producto en especial que si tiene datos en
> InvincialE y InvincialS, pero no está en la tabla InvIni1.

> SELECT     dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
> dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
> (dbo.INVINI1.IniValOtr, 0)
>                       + dbo.InVInicialE.Entrada$ -
> dbo.InvInicialS.Salida$ AS InvI$
> FROM         dbo.InVInicialE LEFT OUTER JOIN
>                       dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
>                       dbo.InvInicialS ON dbo.INVINI1.PrdCod > > dbo.InvInicialS.PRDCOD
> WHERE     (dbo.INVINI1.PrdCod = '441002510094')
Respuesta Responder a este mensaje
#3 Carlos Sacristan
17/06/2009 - 14:31 | Informe spam
Si filtras al final por dbo.INVINI1.PrdCod = '441002510094' y no existe
ningún registro que cumpla ese criterio, es normal que no te devuelva nada
(fíjate que estás usando el campo PrdCod de la tabla INVIN1, y tú mismo has
dicho que en dicha tabla no existe ese código de producto).

Tendrás que filtrar por cualquiera de las otras vistas (InvInicialE o
InvInicialS)

Un saludo
-
www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"bavaro" escribió en el mensaje
news:
David, gracias por responder, me sigue no entregando datos, si ejecuto
la vistas InvInicialE y InvInicialS por si solas me entrega datos para
ese producto, pero al enlazar con la tabla InvIni1 (el producto no
está en esta tabla) no me muestra nada, cuál podría ser el problema?

On 16 jun, 19:12, David Austria wrote:
¡Hola!
Revisa bien que en tu consulta tu tabla principal sea INVINI1.
También usa el ISNULL en todos los campos para garantizar no tener
valores nulos en la consulta.

Intenta lo siguiente:

SELECT INVINI1.PrdCod,
ISNULL(INVINI1.IniCan, 0) +
ISNULL(InVInicialE.EntradaU, 0) - ISNULL(InvInicialS.SalidaU, 0) AS
InvIU,
ISNULL(INVINI1.IniValOtr, 0) +
ISNULL(InVInicialE.Entrada, 0) - ISNULL(InvInicialS.Salida, 0) AS InvI
FROM
dbo.InVInicialE RIGHT OUTER JOIN
dbo.InvInicialS RIGHT OUTER JOIN
dbo.INVINI1 ON
dbo.InvInicialS.PrdCod = dbo.INVINI1.PrdCod ON
dbo.InVInicialE.PrdCod = dbo.INVINI1.PrdCod
WHERE (dbo.INVINI1.PrdCod = '441002510094')

Saludos
David Austria

On 16 jun, 16:30, bavaro wrote:

> Estimados :
> No logro resolver este problema, tengo tres tablas :
> InVinicialE
> InVinicialS
> InvIni1

> Esta Query funciona cuando encuentra registros en invIni1, sino no
> entrega nada en las fórmulas del select.
> Como hago para que si no encuentra registro en Invini1 me deje 0 en
> los campos del InvIni1 que estoy ocupando en la suma, para así
> entregar el resultado de la suma y resta?
> .
> Estoy buscando un producto en especial que si tiene datos en
> InvincialE y InvincialS, pero no está en la tabla InvIni1.

> SELECT dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
> dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
> (dbo.INVINI1.IniValOtr, 0)
> + dbo.InVInicialE.Entrada$ -
> dbo.InvInicialS.Salida$ AS InvI$
> FROM dbo.InVInicialE LEFT OUTER JOIN
> dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
> dbo.InvInicialS ON dbo.INVINI1.PrdCod > > dbo.InvInicialS.PRDCOD
> WHERE (dbo.INVINI1.PrdCod = '441002510094')
Respuesta Responder a este mensaje
#4 bavaro
17/06/2009 - 14:53 | Informe spam
Carlos, tienes razón, le agregué una tabla de productos de venta para
que lo busque ahí y lo encuentre, el problema es que el resultado que
sale es el siguiente :

prdcod InvIU InvIS
441002510094 NULL NULL

es como que este campo ISNULL(dbo.INVINI1.IniCan, 0) lo siga tomando
como null y no 0 para que haga la operación de suma y resta en el
select.

la query cambió a esta :

SELECT dbo.PRODVENT.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
(dbo.INVINI1.IniValOtr, 0)
+ dbo.InVInicialE.Entrada$ -
dbo.InvInicialS.Salida$ AS InvI$
FROM dbo.InVInicialE LEFT OUTER JOIN
dbo.INVINI1 ON dbo.InVInicialE.PRDCOD dbo.INVINI1.PrdCod RIGHT OUTER JOIN
dbo.PRODVENT INNER JOIN
dbo.InvInicialS ON dbo.PRODVENT.PrdCod dbo.InvInicialS.PRDCOD ON dbo.InVInicialE.PRDCOD = dbo.PRODVENT.PrdCod
AND
dbo.INVINI1.PrdCod = dbo.InvInicialS.PRDCOD
WHERE (dbo.PRODVENT.PrdCod = '441002510094')



On 17 jun, 08:31, "Carlos Sacristan" wrote:
Si filtras al final por dbo.INVINI1.PrdCod = '441002510094' y no existe
ningún registro que cumpla ese criterio, es normal que no te devuelva nada
(fíjate que estás usando el campo PrdCod de la tabla INVIN1, y tú mismo has
dicho que en dicha tabla no existe ese código de producto).

Tendrás que filtrar por cualquiera de las otras vistas (InvInicialE o
InvInicialS)

Un saludo
-www.navento.com
Servicios de Localización GPS

http://blogs.solidq.com/ES/ElRincon...fault.aspx

"bavaro" escribió en el mensajenews:
David, gracias por responder, me sigue no entregando datos, si ejecuto
la vistas InvInicialE y InvInicialS por si solas me entrega datos para
ese producto, pero al enlazar con la tabla InvIni1 (el producto no
está en esta tabla) no me muestra nada, cuál podría ser el problema?

On 16 jun, 19:12, David Austria wrote:

> ¡Hola!
> Revisa bien que en tu consulta tu tabla principal sea INVINI1.
> También usa el ISNULL en todos los campos para garantizar no tener
> valores nulos en la consulta.

> Intenta lo siguiente:

> SELECT INVINI1.PrdCod,
> ISNULL(INVINI1.IniCan, 0) +
> ISNULL(InVInicialE.EntradaU, 0) - ISNULL(InvInicialS.SalidaU, 0) AS
> InvIU,
> ISNULL(INVINI1.IniValOtr, 0) +
> ISNULL(InVInicialE.Entrada, 0) - ISNULL(InvInicialS.Salida, 0) AS InvI
> FROM
> dbo.InVInicialE RIGHT OUTER JOIN
> dbo.InvInicialS RIGHT OUTER JOIN
> dbo.INVINI1 ON
> dbo.InvInicialS.PrdCod = dbo.INVINI1.PrdCod ON
> dbo.InVInicialE.PrdCod = dbo.INVINI1.PrdCod
> WHERE (dbo.INVINI1.PrdCod = '441002510094')

> Saludos
> David Austria

> On 16 jun, 16:30, bavaro wrote:

> > Estimados :
> > No logro resolver este problema, tengo tres tablas :
> > InVinicialE
> > InVinicialS
> > InvIni1

> > Esta Query funciona cuando encuentra registros en invIni1, sino no
> > entrega nada en las fórmulas del select.
> > Como hago para que si no encuentra registro en Invini1 me deje 0 en
> > los campos del InvIni1 que estoy ocupando en la suma, para así
> > entregar el resultado de la suma y resta?
> > .
> > Estoy buscando un producto en especial que si tiene datos en
> > InvincialE y InvincialS, pero no está en la tabla InvIni1.

> > SELECT dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
> > dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
> > (dbo.INVINI1.IniValOtr, 0)
> > + dbo.InVInicialE.Entrada$ -
> > dbo.InvInicialS.Salida$ AS InvI$
> > FROM dbo.InVInicialE LEFT OUTER JOIN
> > dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > > > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
> > dbo.InvInicialS ON dbo.INVINI1.PrdCod > > > dbo.InvInicialS.PRDCOD
> > WHERE (dbo.INVINI1.PrdCod = '441002510094')
Respuesta Responder a este mensaje
#5 bavaro
17/06/2009 - 14:57 | Informe spam
Gracias a todos, solucionado, aparte del comentario de Carlos, era
esta instrucción :

dbo.PRODVENT INNER JOIN

tiene que ser : LEFT OUTER JOIN


On 17 jun, 08:53, bavaro wrote:
Carlos, tienes razón, le agregué una tabla de productos de venta para
que lo busque ahí y lo encuentre, el problema es que el resultado que
sale es el siguiente :

prdcod                   InvIU          InvIS
441002510094        NULL         NULL

es como que este campo ISNULL(dbo.INVINI1.IniCan, 0) lo siga tomando
como null y no 0 para que haga la operación de suma y resta en el
select.

la query cambió a esta :

SELECT     dbo.PRODVENT.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
(dbo.INVINI1.IniValOtr, 0)
                      + dbo.InVInicialE.Entrada$ -
dbo.InvInicialS.Salida$ AS InvI$
FROM         dbo.InVInicialE LEFT OUTER JOIN
                      dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
                      dbo.PRODVENT INNER JOIN
                      dbo.InvInicialS ON dbo.PRODVENT.PrdCod > dbo.InvInicialS.PRDCOD ON dbo.InVInicialE.PRDCOD = dbo.PRODVENT.PrdCod
AND
                      dbo.INVINI1.PrdCod = dbo.InvInicialS.PRDCOD
WHERE     (dbo.PRODVENT.PrdCod = '441002510094')

On 17 jun, 08:31, "Carlos Sacristan" wrote:

> Si filtras al final por dbo.INVINI1.PrdCod = '441002510094' y no existe
> ningún registro que cumpla ese criterio, es normal que no te devuelva nada
> (fíjate que estás usando el campo PrdCod de la tabla INVIN1, y tú mismo has
> dicho que en dicha tabla no existe ese código de producto).

> Tendrás que filtrar por cualquiera de las otras vistas (InvInicialE o
> InvInicialS)

> Un saludo
> -www.navento.com
> Servicios de Localización GPS

>http://blogs.solidq.com/ES/ElRincon...fault.aspx

> "bavaro" escribió en el mensajenews:
> David, gracias por responder, me sigue no entregando datos, si ejecuto
> la vistas InvInicialE y InvInicialS por si solas me entrega datos para
> ese producto, pero al enlazar con la tabla InvIni1 (el producto no
> está en esta tabla) no me muestra nada, cuál podría ser el problema?

> On 16 jun, 19:12, David Austria wrote:

> > ¡Hola!
> > Revisa bien que en tu consulta tu tabla principal sea INVINI1.
> > También usa el ISNULL en todos los campos para garantizar no tener
> > valores nulos en la consulta.

> > Intenta lo siguiente:

> > SELECT INVINI1.PrdCod,
> > ISNULL(INVINI1.IniCan, 0) +
> > ISNULL(InVInicialE.EntradaU, 0) - ISNULL(InvInicialS.SalidaU, 0) AS
> > InvIU,
> > ISNULL(INVINI1.IniValOtr, 0) +
> > ISNULL(InVInicialE.Entrada, 0) - ISNULL(InvInicialS.Salida, 0) AS InvI
> > FROM
> > dbo.InVInicialE RIGHT OUTER JOIN
> > dbo.InvInicialS RIGHT OUTER JOIN
> > dbo.INVINI1 ON
> > dbo.InvInicialS.PrdCod = dbo.INVINI1.PrdCod ON
> > dbo.InVInicialE.PrdCod = dbo.INVINI1.PrdCod
> > WHERE (dbo.INVINI1.PrdCod = '441002510094')

> > Saludos
> > David Austria

> > On 16 jun, 16:30, bavaro wrote:

> > > Estimados :
> > > No logro resolver este problema, tengo tres tablas :
> > > InVinicialE
> > > InVinicialS
> > > InvIni1

> > > Esta Query funciona cuando encuentra registros en invIni1, sino no
> > > entrega nada en las fórmulas del select.
> > > Como hago para que si no encuentra registro en Invini1 me deje 0 en
> > > los campos del InvIni1 que estoy ocupando en la suma, para así
> > > entregar el resultado de la suma y resta?
> > > .
> > > Estoy buscando un producto en especial que si tiene datos en
> > > InvincialE y InvincialS, pero no está en la tabla InvIni1.

> > > SELECT dbo.INVINI1.PrdCod, ISNULL(dbo.INVINI1.IniCan, 0) +
> > > dbo.InVInicialE.EntradaU - dbo.InvInicialS.SalidaU AS InvIU, ISNULL
> > > (dbo.INVINI1.IniValOtr, 0)
> > > + dbo.InVInicialE.Entrada$ -
> > > dbo.InvInicialS.Salida$ AS InvI$
> > > FROM dbo.InVInicialE LEFT OUTER JOIN
> > > dbo.INVINI1 ON dbo.InVInicialE.PRDCOD > > > > dbo.INVINI1.PrdCod RIGHT OUTER JOIN
> > > dbo.InvInicialS ON dbo.INVINI1.PrdCod > > > > dbo.InvInicialS.PRDCOD
> > > WHERE (dbo.INVINI1.PrdCod = '441002510094')
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida