PDA

Ver la Versión Completa : Utilizar sentencias Select como si fueran Tablas


Newbie
30-07-2003, 21:12:34
Hola amigos :)

Quiero hacer una consulta en la que se utilice un select como si fuera una tabla, es decir, de él seleccionar datos. A continuación pongo el código como lo tengo actualmente para que se den una idea:

select sum(total) from
(Select Scve_Sucursal, CABreviatura3,
(select sum(stotal) from Numeracion_remesa where scve_sucursal = S.scve_sucursal
and cstatus = 'G') Total
from sucursal S) T
En este caso quiero obtener la suma del total, campo que obtengo utilizando otro select.

Cabe señalar que he hecho este tipo de consultas en SQL Server y sí es soportado con la sintaxis que utilicé aquí. ¿Alguien sabe si esto es posible en Interbase(es el gestor que estoy utilizando) y, de ser así, me podría indicar cuál es la sintaxis correcta?

Gracias y hasta pronto :D

delphi.com.ar
30-07-2003, 21:24:42
Me parece que estas complicando la sentencia...
¿No es algo como esto?
select sum(stotal)
from Numeracion_remesa nr, sucursal s
where nr.scve_sucursal = S.scve_sucursal
and cstatus = 'G'


Saludos!

Newbie
30-07-2003, 21:41:28
Si, sé que la consulta es un poco complicada, de hecho ya la reduje, pero en sí lo que me interesaba saber es si es posible hacer algo como eso en Interbase, ya que algunas veces he tenido esa necesidad. Lo he resuelto usando stored procedures, pero me intriga saber si se podría utilizar el resultado de un select como si fuera una tabla.

Y gracias por tu respuesta, en adelante pondré más empeño en hacerlas lo más simples posible. :)

guillotmarc
30-07-2003, 22:03:15
Hola.

Hasta donde yo sé, no se puede hacer en Interbase / Firebird. Lo único parecido que puedes hacer es poner la primera consulta en una vista, y realizar una consulta sobre la vista.

Saludos.

Newbie
31-07-2003, 01:32:22
Ya lo hice, gracias!!!
En efecto, Interbase no da la capacidad de hacer lo que yo pretendía, pero tampoco recurrí a la creación de una vista. Lo que hice fue crear el siguiente procedimiento almacenado
CREATE PROCEDURE "Totales_Remesa"
RETURNS (
SCVE_SUCURSAL INTEGER,
ABREVIATURA VARCHAR(3),
TOTAL INTEGER)
AS
begin
for Select Scve_Sucursal, CABreviatura3,
(select sum(stotal) from Numeracion_remesa where scve_sucursal = S.scve_sucursal
and cstatus = 'G') Total
from sucursal S
into :scve_sucursal, :abreviatura, :total
do
begin
if (total is null) then
total = 0;
suspend;
end
end
y lo llamo para saber el total en cada tienda; y cuando quiero obtener el total de todas las tiendas apoyándome en el mismo procedimiento almacenado, lo que hago es
select sum(total) from "Totales_Remesa"

o bien, directamente con un query obtengo el total de todas las tiendas
select sum(stotal) from Numeracion_remesa where cstatus = 'G'

Gracias por su apoyo :)