Consulta Complicada

18/05/2004 - 22:10 por Gustavo Monasterios | Informe spam
A ver si me explico: Tengo una tabla Entidades que
contiene una clave principal EntidadID y otro campo
AsignadoA que representa de que otra Entidad depende
esta. Esto es para crear una grado de jerarquias entre
Entidades. Tengo otra tabla Transacciones donde se
almacenan los movimientos de dinero entre dos entidades,
mediante los campos Origen y Destino. Mi duda estriba en
como puedo hacer una consulta que me muestre las
transacciones que tengan como origen a una determinada
entidad y a las entidades que esten por debajo de ella en
el arbol de asignacion de entidades solamente.

Preguntas similare

Leer las respuestas

#1 John Jairo Bocachica
18/05/2004 - 22:51 | Informe spam
Hola, te cuento que solo hay que cruzar unos datos, para poderla hacerla
eficientemente decidi colocarle un identificador a cada transaccion.

select distinct(TranID), cantidad, origen, destino from transacciones,
entidades
where transacciones.Origen=1 or
(Entidades.Asignadoa=1 and entidades.EntidadId<>1)

Donde "1" es la entidad a la que queremos verle todas sus transacciones y
las de sus entidades dependientes

John Jairo Bocachica
Colombia


"Gustavo Monasterios" wrote in message
news:ed0801c43d14$20b29030$
A ver si me explico: Tengo una tabla Entidades que
contiene una clave principal EntidadID y otro campo
AsignadoA que representa de que otra Entidad depende
esta. Esto es para crear una grado de jerarquias entre
Entidades. Tengo otra tabla Transacciones donde se
almacenan los movimientos de dinero entre dos entidades,
mediante los campos Origen y Destino. Mi duda estriba en
como puedo hacer una consulta que me muestre las
transacciones que tengan como origen a una determinada
entidad y a las entidades que esten por debajo de ella en
el arbol de asignacion de entidades solamente.
Respuesta Responder a este mensaje
#2 Anonimo
19/05/2004 - 01:08 | Informe spam
Gracias por tu respuesta. Esto es correcto pero no
completamente, porque solo estas observando un nivel de
asignación entre entidades. La estructura es como un
arbol y yo quiero ver todas las hojas de una determinada
rama. O sea una entidad puede estar asignada a otra, pero
esta a su vez puede tener entidades "hija" asignadas; y
asi sucesivamente.
Respuesta Responder a este mensaje
#3 Isaías
19/05/2004 - 02:46 | Informe spam
¿Hasta cuantos NIVELES?
Respuesta Responder a este mensaje
#4 Javier Loria
19/05/2004 - 05:54 | Informe spam
Hola Gustavo:
Si la Tabla de Entidades solo permite un nivel pequeno y conocido de
niveles, es posible lograrlo con T-SQL en una sola consulta. Si el nivel es
mas de 5/6 o si no es conocido entonces debe hacerse por medio de una Tabla
Temporal.
Adicionalmente es posible que quieras mirar la teorias de arboles y
jerarquias de Joe Celko.
Si nos pones cual es resultado deseado y sobretodo si nos envias el
codigo de creacion de las tablas, con gusto te ayudamos.

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.
Gustavo Monasterios escribio:
A ver si me explico: Tengo una tabla Entidades que
contiene una clave principal EntidadID y otro campo
AsignadoA que representa de que otra Entidad depende
esta. Esto es para crear una grado de jerarquias entre
Entidades. Tengo otra tabla Transacciones donde se
almacenan los movimientos de dinero entre dos entidades,
mediante los campos Origen y Destino. Mi duda estriba en
como puedo hacer una consulta que me muestre las
transacciones que tengan como origen a una determinada
entidad y a las entidades que esten por debajo de ella en
el arbol de asignacion de entidades solamente.
Respuesta Responder a este mensaje
#5 Anonimo
19/05/2004 - 16:01 | Informe spam
Los niveles máximos son cuatro

CREATE TABLE [dbo].[ENTIDADES] (
[EntidadID] [int] IDENTITY (1, 1) NOT NULL ,
[Entidad] [varchar] (30) COLLATE
Modern_Spanish_CI_AS NOT NULL ,
[DireccionEntidad] [varchar] (80) COLLATE
Modern_Spanish_CI_AS NOT NULL ,
[TelefonoEntidad] [varchar] (50) COLLATE
Modern_Spanish_CI_AS NOT NULL ,
[FechaCreacion] [datetime] NOT NULL ,
[Vende] [bit] NOT NULL ,
[ParticipacionEntidad] [smallmoney] NOT NULL ,
[CuotaEntidad] [money] NOT NULL ,
[DeudaEntidad] [money] NOT NULL ,
[TipoEntidad] [smallint] NOT NULL ,
[Impuesto] [smallmoney] NOT NULL ,
[TipoCuotaEntidad] [smallint] NOT NULL ,
[Ciudad] [varchar] (30) COLLATE
Modern_Spanish_CI_AS NOT NULL ,
[Estado] [smallint] NOT NULL ,
[Propia] [bit] NOT NULL ,
[AsignadoAEntidadID] [int] NOT NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[TRANSACCIONES] (
[TransaccionID] [int] IDENTITY (1, 1) NOT NULL ,
[FechaTransaccion] [datetime] NOT NULL ,
[MontoTransaccion] [money] NOT NULL ,
[OrigenEntidadID] [int] NOT NULL ,
[DestinoEntidadID] [int] NOT NULL ,
[CuentaDestinoCuentaID] [int] NOT NULL ,
[CuentaOrigenCuentaID] [int] NOT NULL ,
[ConceptoID] [int] NOT NULL
) ON [PRIMARY]
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida