PDA

Ver la Versión Completa : Problema con subQuerie


sabato48
27-06-2008, 19:33:06
Hola Tengo un problema con Paradox.

Tengo una consulta, en la cual un campo es una subconsulta a la cual le paso un parametro de la consulta principal, la subconsulta me devuelve una suma, el problema es que al ejecutarla, esta no me regresa nada.

pongo la consulta:

select I.CLV_ART, CAMPOSTRU1, I.CAMPOSTRU3, CAMPOINTU,CAMPODBL4,CAMPODBL8,
(select sum(MI.CANT) suma from tablaInt MI
where MI.clv_art = I.clv_art
AND MI.TIPO_MOV IN (51)
and extract(month from FECHA_DOCU)=4
and extract(year from FECHA_DOCU)=2008) venta1
from tabla1 I
where I.STATUS='A'
and I.CAMPOSTRU3='HILO LATEX'
and I.CAMPOSTRU2='LATEX 40BL40EX'
GROUP BY CLV_ART, CAMPOSTRU1, CAMPOINTU,CAMPODBL4,CAMPODBL8,I.CAMPOSTRU3

Si ejecuto la subconsulta unicamente,


select SUM(MI.CANT) suma
from tablaInt MI
where MI.clv_art='LATEX 40BL40EX'
AND MI.TIPO_MOV IN (51)
and extract(month from FECHA_DOCU)=4
and extract(year from FECHA_DOCU)=2008


No tengo ningun problema y me da un valor correcto.

alguien me podria decir si paradox no acepta que le pase asi el parametro, o talvez mi error es otro?¡?.

Gracias anticipadas.

enecumene
27-06-2008, 19:35:55
select I.CLV_ART, CAMPOSTRU1, I.CAMPOSTRU3, CAMPOINTU,CAMPODBL4,CAMPODBL8,
(select sum(MI.CANT) suma from tablaInt MI
where MI.clv_art = I.clv_art
AND MI.TIPO_MOV IN (51)
and extract(month from FECHA_DOCU)=4
and extract(year from FECHA_DOCU)=2008) as venta1 <--//creo que falta esto
from tabla1 I
where I.STATUS='A'
and I.CAMPOSTRU3='HILO LATEX'
and I.CAMPOSTRU2='LATEX 40BL40EX'
GROUP BY CLV_ART, CAMPOSTRU1, CAMPOINTU,CAMPODBL4,CAMPODBL8,I.CAMPOSTRU3

sabato48
27-06-2008, 19:42:45
Hola gracias enecumene, si me faltaba el as, aunque sin este la consulta funciona, pero aún así el Query no funciona, supongo que el error se debe al paso del parametro
where MI.clv_art = I.clv_art
en el subquerie y en ese caso no se si se deba de pasar de alguna
otra forma

enecumene
27-06-2008, 19:46:13
Por lo que veo en el Sub-Query te falta poner en el from la tabla donde corresponde el campo I.clv_art, o sea:

select sum(MI.CANT) suma from tablaInt MI, OtraTabla I
where MI.clv_art = I.clv_art
AND MI.TIPO_MOV IN (51)
and extract(month from FECHA_DOCU)=4
and extract(year from FECHA_DOCU)=2008

Saludos.

sabato48
27-06-2008, 19:59:39
Hola gracias por el interes :) !!!

De hecho el campo I.clv_art

del subquerie viene de la tabla del querie principal from tabla1 I


si pongo la tabla en el subquerie, tengo que poner en este ademas otra condicion
and I.CAMPOSTRU2='LATEX 40BL40EX'


la cual seria redundante ya que esta condicion existe ya en el querie principal.
Gracias