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 30-07-2003
Newbie Newbie is offline
Miembro
 
Registrado: jul 2003
Ubicación: Veracruz, México
Posts: 30
Poder: 0
Newbie Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 30-07-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
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!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 30-07-2003
Newbie Newbie is offline
Miembro
 
Registrado: jul 2003
Ubicación: Veracruz, México
Posts: 30
Poder: 0
Newbie Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 30-07-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #5  
Antiguo 31-07-2003
Newbie Newbie is offline
Miembro
 
Registrado: jul 2003
Ubicación: Veracruz, México
Posts: 30
Poder: 0
Newbie Va por buen camino
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
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 12:29:38.


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