Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2004
Ignacio Ignacio is offline
Miembro
 
Registrado: may 2003
Posts: 77
Poder: 21
Ignacio Va por buen camino
Post Select anidados

Hola

Les cuento el problema. Tengo una tabla "Cuotas", la cual está compuesta por los campos NumeroCTA, PlanCTA y FechaCTA. Otra tabla "Plan" con los campos NumeroPLN, ClientePLN y MontoPLN. En el campo MontoPLN se encuentra todo el importe del plan, y si lo divido por la cantidad de registros de la tabla "cuotas", obtengo el Importe de cada cuota. Necesito realizar una consulta con la siguiente forma.

Select NumeroCTA,
FechaCTA,
MontoPLN / (Select Count(*)
From Cuotas
Where PlanCTA=:NumeroDePlan)
as ImporteCTA
From Cuotas
Inner Join Plan on (NumeroPLN=PlanCTA)
Where NumeroPLN=:NumeroDePlan
Order by FechaCTA

Cabe aclarar que el código que pongo de ejemplo es una reducción del caso real. Lo mensiono para no intentar resolver lo de los importe de las cuotas de otra manera.
En realidad lo que necesito resolver es el uso de parámetros dentro de un select anidado porque el parametro del select externo funciona correctamente. Cuando reemplazo el parametro interno por una constante, todo funciona bien, eso me demuestra que el error está en el uso de parametros en el select interno (de todas maneras, no debe ser una constante sino una variable). Otro intento que hice fue reemplasar el parametro del select interno :NumeroDePlan por el campo NumeroPLN. En este caso el error es diferente pero error aun. Bueno, no quiero hacerles mas lio con mi explicación.
Desde ya, muchas gracias
Responder Con Cita
  #2  
Antiguo 21-02-2004
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 21
orfeo Va por buen camino
Que yo sepa no se puede usar un subQuery como operando de operaciones matematicas (excepto que halla una funcion extendida que sea algo como getReal( subQuery SQL ) / 20) porque el subQuery devuelve una tabla, no un numero.


Lo que queres podrias hacerlo con procedimiento almacenados porque te permiten definir variables.

Si usas MySQL podes definir variables y luego usarlas en otras consultas como:

SELECT @a:=SUM(total)
from XXX

SELECT @a+4
__________________
Aprendamos a ser civilizados

Última edición por orfeo fecha: 22-02-2004 a las 02:41:40.
Responder Con Cita
  #3  
Antiguo 21-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
¿ Que base de datos utilizas ?

En las que uso yo se puede indicar perfectamente un parámetro dentro de una subconsulta.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 23-02-2004
Ignacio Ignacio is offline
Miembro
 
Registrado: may 2003
Posts: 77
Poder: 21
Ignacio Va por buen camino
La base de datos es Paradox
Responder Con Cita
  #5  
Antiguo 23-02-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
Hola.

Lo siento, no te puedo ayudar mucho puesto que nunca he utilizado Paradox (aunque me da la impresión, por lo que he podido ver en los Foros, que su soporte SQL es bastante limitado).

Prueba a comparar con el campo, en lugar de con un parámetro. Para evitar el error que te da en este caso, tienes que identificar sin ambiguedades a que campo te refieres, puesto que puede ser tanto al presente en la consulta externa como a la interna. Para evitar la ambiguedad tienes que utilizar Alias.

Ejplo :

Código:
Select NumeroCTA, FechaCTA, 
    MontoPLN / (Select Count(*) From Cuotas C2 Where C1.PlanCTA=C2.PlanCTA) as ImporteCTA
From Cuotas C1
     Inner Join Plan on (NumeroPLN=PlanCTA)
Where NumeroPLN=:NumeroDePlan
Order by FechaCTA
NOTA : Esto lo soportarán la mayoría de Servidores SQL, pero desconozco si lo hará Paradox.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 23-02-2004
Ignacio Ignacio is offline
Miembro
 
Registrado: may 2003
Posts: 77
Poder: 21
Ignacio Va por buen camino
Gracias Marc. Con los Alias funcionó perfectamente.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:17:50.


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