Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Utilizar sentencias Select como si fueran Tablas (https://www.clubdelphi.com/foros/showthread.php?t=2611)

Newbie 30-07-2003 21:12:34

Utilizar sentencias Select como si fueran Tablas
 
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:

Código:

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?
Código:

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

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

select sum(total) from "Totales_Remesa"
o bien, directamente con un query obtengo el total de todas las tiendas
Código:

select sum(stotal) from Numeracion_remesa where cstatus = 'G'
Gracias por su apoyo :)


La franja horaria es GMT +2. Ahora son las 05:01:10.

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