Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Mostrar un campo de otra consulta

Estas en el tema de Mostrar un campo de otra consulta en el foro de Bases de Datos General en Foros del Web. Bueno, vayamos al punto. Tengo la sgte. sentencia: Código: SELECT ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt FROM RORDCAB oc, RORDLIN ol, RMAEBOD b WHERE ...
  #1 (permalink)  
Antiguo 07/12/2006, 08:05
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Pregunta Mostrar un campo de otra consulta

Bueno, vayamos al punto.
Tengo la sgte. sentencia:
Código:
SELECT ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt
FROM RORDCAB oc, RORDLIN ol, RMAEBOD b
WHERE oc.CiaCod = ol.CiaCod
AND oc.OrdId = ol.OrdId
AND oc.OrdSec = ol.OrdSec
AND ol.CiaCod = b.CiaCod
AND ol.MaeCod = b.MaeCod
AND oc.OrdEst = 'A'
AND oc.OrdSF = 'N'
AND b.BdgId = 1
GROUP BY ol.MaeCod
ORDER BY ol.MaeCod
//go

SELECT oc.OrdId, ol.MaeCod, ol.OrdCant, ol.OrdCaEnt
FROM RORDCAB oc, RORDLIN ol, RMAEBOD b
WHERE oc.CiaCod = ol.CiaCod
AND oc.OrdId = ol.OrdId
AND oc.OrdSec = ol.OrdSec
AND ol.CiaCod = b.CiaCod
AND ol.MaeCod = b.MaeCod
AND oc.OrdEst = 'A'
AND oc.OrdSF = 'N'
AND b.BdgId = 1
//go

SELECT * FROM RMAEBOD
WHERE MaeCod = '7174165J0038B'
AND BdgId = 1
Esto muestra:


En la consulta de arriba, debe aparecerme el 4 si la resta de OrdCant - OrdCaEnt es diferente de MaePed.

Espero que se entienda.
Cualquier ayuda, consejo, etc. es bienvenido.
Gracias!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #2 (permalink)  
Antiguo 07/12/2006, 09:40
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

prueba con esto y me cuantas!
Código:
SELECT
	ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt,
	CASE
		WHEN SUM(OL.ORDCANT) - SUM(OL.ORDENT) <> B.MAEPED THEN
			B.MAEPED
		ELSE
			/*VALOR POR DEFAULT*/
			NULL
	END AS RESULTADO
FROM
	RORDLIN OL
INNER JOIN
	RMAEBOD B
	ON
	B.CIACOD = OL.CIACOD
	AND
	B.MAECOD = OL.MAECOD
WHERE
	EXISTS(
		SELECT
			1
		FROM
			RORDCAB OC
		WHERE
			OC.ORDEST = 'A'
			AND
			OC.ORDFS = 'N'
			AND
			OC.CIACOD = OL.CIACOD
			AND
			OC.ORDID = OL.ORDID
			AND
			OC.ORDSEC = OL.ORDSEC
	)
	AND
	B.BDGID = 1
Saludos!

Última edición por Gabo77; 07/12/2006 a las 09:54 Razón: Me falto definir el nombre de la columna calculada... :P
  #3 (permalink)  
Antiguo 07/12/2006, 11:50
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Mostrar un campo de otra consulta

Ya funciona, solo faltaba al final:
GROUP BY OL.MAECOD, B.MAEPED
ORDER BY OL.MAECOD

Solo hay un pero: solo necesito que salgan los registros que cumplen con la condicion en el WHEN, porque salen muchos (null).
¿Qué se debe hacer?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #4 (permalink)  
Antiguo 07/12/2006, 13:28
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

para el ejemplo que planteaste si dio el resultado?

Saludos!
  #5 (permalink)  
Antiguo 07/12/2006, 13:43
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

aahh ya entendí tu pregunta, solo agregale un where con algo como esto

Código:
WHERE
        SUM(OL.ORDCANT) - SUM(OL.ORDENT) <> B.MAEPED
si entiendes que para esto, el CASE está de más no?

Saludos!
  #6 (permalink)  
Antiguo 07/12/2006, 16:14
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Mostrar un campo de otra consulta

Bueno, todo lo que necesitaba ya lo realize. Muchas gracias!
Solo no entendi donde poner ese WHERE.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 07/12/2006, 16:31
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

Esta sería tu consulta final

Saludos!

Código:
SELECT
	ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt, B.MAEPED AS RESULTADO
FROM
	RORDLIN OL
INNER JOIN
	RMAEBOD B
	ON
	B.CIACOD = OL.CIACOD
	AND
	B.MAECOD = OL.MAECOD
WHERE
	EXISTS(
		SELECT
			1
		FROM
			RORDCAB OC
		WHERE
			OC.ORDEST = 'A'
			AND
			OC.ORDFS = 'N'
			AND
			OC.CIACOD = OL.CIACOD
			AND
			OC.ORDID = OL.ORDID
			AND
			OC.ORDSEC = OL.ORDSEC
	)
	AND
	B.BDGID = 1
WHERE
        SUM(OL.ORDCANT) - SUM(OL.ORDENT) <> B.MAEPED
GROUP BY
        OL.MAECOD, B.MAEPED
ORDER BY
        OL.MAECOD
  #8 (permalink)  
Antiguo 07/12/2006, 17:24
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Mostrar un campo de otra consulta

Sale error: "Incorrect syntax near the keyword 'WHERE'."
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 08/12/2006, 09:33
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

Nobody's perfect!
Código:
SELECT
	ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt, B.MAEPED AS RESULTADO
FROM
	RORDLIN OL
INNER JOIN
	RMAEBOD B
	ON
	B.CIACOD = OL.CIACOD
	AND
	B.MAECOD = OL.MAECOD
WHERE
	EXISTS(
		SELECT
			1
		FROM
			RORDCAB OC
		WHERE
			OC.ORDEST = 'A'
			AND
			OC.ORDFS = 'N'
			AND
			OC.CIACOD = OL.CIACOD
			AND
			OC.ORDID = OL.ORDID
			AND
			OC.ORDSEC = OL.ORDSEC
	)
	AND
	B.BDGID = 1
        AND
        SUM(OL.ORDCANT) - SUM(OL.ORDENT) <> B.MAEPED
GROUP BY
        OL.MAECOD, B.MAEPED
ORDER BY
        OL.MAECOD
  #10 (permalink)  
Antiguo 11/12/2006, 08:23
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Mostrar un campo de otra consulta

Ahora sale: An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 11/12/2006, 14:49
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta

Código:
SELECT
	ol.MaeCod, SUM(ol.OrdCant) as OrdCant, SUM(ol.OrdCaEnt) as OrdCaEnt, B.MAEPED AS RESULTADO
FROM
	RORDLIN OL
INNER JOIN
	RMAEBOD B
	ON
	B.CIACOD = OL.CIACOD
	AND
	B.MAECOD = OL.MAECOD
WHERE
	EXISTS(
		SELECT
			1
		FROM
			RORDCAB OC
		WHERE
			OC.ORDEST = 'A'
			AND
			OC.ORDFS = 'N'
			AND
			OC.CIACOD = OL.CIACOD
			AND
			OC.ORDID = OL.ORDID
			AND
			OC.ORDSEC = OL.ORDSEC
	)
	AND
	B.BDGID = 1
GROUP BY
        OL.MAECOD, B.MAEPED
HAVING
        SUM(OL.ORDCANT) - SUM(OL.ORDENT) <> B.MAEPED
ORDER BY
        OL.MAECOD
Me rindo, es lo malo de no compilar! :( esta no debe fallar
  #12 (permalink)  
Antiguo 11/12/2006, 15:41
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Re: Mostrar un campo de otra consulta

Ejecuta pero no muestra nada. Bueno, dejemoslo ahi, ya me has ayudado bastante, ademas que lo principal ya lo hice. Muchisimas gracias amigon!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #13 (permalink)  
Antiguo 11/12/2006, 16:50
Avatar de Gabo77  
Fecha de Ingreso: noviembre-2006
Mensajes: 381
Antigüedad: 17 años, 5 meses
Puntos: 6
Re: Mostrar un campo de otra consulta



Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:00.