Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con subQuerie (https://www.clubdelphi.com/foros/showthread.php?t=57802)

sabato48 27-06-2008 19:33:06

Problema con subQuerie
 
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:

Código SQL [-]
 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,

Código SQL [-]
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

Código SQL [-]
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
Código SQL [-]
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:

Código SQL [-]
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
Código SQL [-]
I.clv_art

del subquerie viene de la tabla del querie principal
Código SQL [-]
from tabla1 I

si pongo la tabla en el subquerie, tengo que poner en este ademas otra condicion
Código SQL [-]
     and I.CAMPOSTRU2='LATEX 40BL40EX'

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


La franja horaria es GMT +2. Ahora son las 23:35:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi