Como se hace esta consulta?

30/08/2006 - 23:07 por Guillermo Peralta | Informe spam
Hola quisiera saber como realizar lo siguiente:

Tablas

Estados
IdEstado
Estado


CambiosEstados
IdEstadoAnterior
IdEstadoActual
Fecha

Los Id están relacionados

Quisiera obtener como resultado

EstadoAnterior | EstadoActual | Fecha

Ahora yo lo hago así:

Select (Select E.Estado from Estados JOIN CambioEstados CE ON
CE.IdEstadoAnterior = E.IdEstado) as EstadoAnterior, (Select E.Estado
from Estados JOIN CambioEstados CE ON CE.IdEstadoActual = E.IdEstado)
as EstadoActual ,etc


Quisiera saber si existe alguna otra forma de hacer lo que busco sin
usar subconsultas.

Gracias

Saludos
Guillermo

Preguntas similare

Leer las respuestas

#1 Alfredo Crisostomo
30/08/2006 - 23:14 | Informe spam
Pero te falta decir cual es el proposito de la consulta...


"Guillermo Peralta" escribió en el mensaje
news:
Hola quisiera saber como realizar lo siguiente:

Tablas

Estados
IdEstado
Estado


CambiosEstados
IdEstadoAnterior
IdEstadoActual
Fecha

Los Id están relacionados

Quisiera obtener como resultado

EstadoAnterior | EstadoActual | Fecha

Ahora yo lo hago así:

Select (Select E.Estado from Estados JOIN CambioEstados CE ON
CE.IdEstadoAnterior = E.IdEstado) as EstadoAnterior, (Select E.Estado
from Estados JOIN CambioEstados CE ON CE.IdEstadoActual = E.IdEstado)
as EstadoActual ,etc


Quisiera saber si existe alguna otra forma de hacer lo que busco sin
usar subconsultas.

Gracias

Saludos
Guillermo
Respuesta Responder a este mensaje
#2 Guillermo Peralta
30/08/2006 - 23:25 | Informe spam
Hola Alfredo;

Necesitaria obtener los dos estados en un mismo Select, queria ver si
hay manera (seguro que si) de hacerlo sin subconsultas

Gracias


Alfredo Crisostomo ha escrito:

Pero te falta decir cual es el proposito de la consulta...


Respuesta Responder a este mensaje
#3 DNC
31/08/2006 - 01:40 | Informe spam

create table dbo.estados
( idestado int identity (1,1) not null,
estado varchar (50) not null default ('')
)
go

insert into estados values('uno')
insert into estados values('dos')
insert into estados values('tres')
insert into estados values('cuatro')
insert into estados values('cinco')
go

select idestado, estado from estados
go


CREATE TABLE [CambiosEstados] (
[IdEstadoAnterior] [int] NOT NULL ,
[IdEstadoActual] [int] NOT NULL ,
[Fecha] [datetime] NOT NULL default (getdate())
)
GO

insert into CambiosEstados values(1,2, default)
insert into CambiosEstados values(2,3, default)
insert into CambiosEstados values(3,3, default)
insert into CambiosEstados values(4,3, default)
insert into CambiosEstados values(5,3, default)
go

select * from CambiosEstados
go

select b.estado, c.estado, a.fecha
from cambiosestados a join estados b on a.IdEstadoAnterior = b.idestado
join estados c on a.IdEstadoActual = c.idestado
go



Cordiales Saludos! ,
Diego.-

<!--Enviar Email: Pega esto en un .htm -->
<!-- INICIO -->
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#100;&#99;&#111;
&#110;&#116;&#105;&#110;&#64;&#65;&#114;&#103;&#101;&#110;&#116;
&#105;&#110;&#97;&#46;&#99;&#111;&#109;">
Diego N. Contin</a>
<!-- FIN -->
Uso del Foro
http://www.mvp-access.com/rubenvigon/foro/

Este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia

The documentation is provided to you "as is" without warranty of any kind.
The entire risk
usage and all it's consequences including data loss and hardware damage are
with you.

"En cuestiones de cultura y de saber, solo se pierde lo que se guarda; solo
se gana lo que se da". Antonio Machado

"Tres cosas que son el deber de todos: escuchar humildemente, responder
discretamente y juzgar bondadosamente."
Tríada celta.

"I wish I'd known that before I started writing all this code."
"Guillermo Peralta" escribió en el mensaje
news:
Hola Alfredo;

Necesitaria obtener los dos estados en un mismo Select, queria ver si
hay manera (seguro que si) de hacerlo sin subconsultas

Gracias


Alfredo Crisostomo ha escrito:

Pero te falta decir cual es el proposito de la consulta...





Respuesta Responder a este mensaje
#4 Maxi
31/08/2006 - 01:46 | Informe spam
Hola, podrias mostrarnos un ejemplo de registros?



Salu2

Microsoft MVP SQL Server
Culminis Speaker
INETA Speaker
www.sqlgururs.org
Email:


"Guillermo Peralta" wrote in message
news:
Hola quisiera saber como realizar lo siguiente:

Tablas

Estados
IdEstado
Estado


CambiosEstados
IdEstadoAnterior
IdEstadoActual
Fecha

Los Id están relacionados

Quisiera obtener como resultado

EstadoAnterior | EstadoActual | Fecha

Ahora yo lo hago así:

Select (Select E.Estado from Estados JOIN CambioEstados CE ON
CE.IdEstadoAnterior = E.IdEstado) as EstadoAnterior, (Select E.Estado
from Estados JOIN CambioEstados CE ON CE.IdEstadoActual = E.IdEstado)
as EstadoActual ,etc


Quisiera saber si existe alguna otra forma de hacer lo que busco sin
usar subconsultas.

Gracias

Saludos
Guillermo
Respuesta Responder a este mensaje
#5 Guillermo Peralta
31/08/2006 - 02:41 | Informe spam
Muchas Gracias Diego, era exactamente lo que preguntaba, gracias por el
ejemplo completo.
El "secreto" estaba en cambiar los alias y no lo habia pensado por ese lado.
:)

Saludos
Guillermo
AG-CBA-ARG


"DNC" escribió en el mensaje
news:

create table dbo.estados
( idestado int identity (1,1) not null,
estado varchar (50) not null default ('')
)
go

insert into estados values('uno')
insert into estados values('dos')
insert into estados values('tres')
insert into estados values('cuatro')
insert into estados values('cinco')
go

select idestado, estado from estados
go


CREATE TABLE [CambiosEstados] (
[IdEstadoAnterior] [int] NOT NULL ,
[IdEstadoActual] [int] NOT NULL ,
[Fecha] [datetime] NOT NULL default (getdate())
)
GO

insert into CambiosEstados values(1,2, default)
insert into CambiosEstados values(2,3, default)
insert into CambiosEstados values(3,3, default)
insert into CambiosEstados values(4,3, default)
insert into CambiosEstados values(5,3, default)
go

select * from CambiosEstados
go

select b.estado, c.estado, a.fecha
from cambiosestados a join estados b on a.IdEstadoAnterior = b.idestado
join estados c on a.IdEstadoActual = c.idestado
go



Cordiales Saludos! ,
Diego.-

<!--Enviar Email: Pega esto en un .htm -->
<!-- INICIO -->
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#100;&#99;&#111;
&#110;&#116;&#105;&#110;&#64;&#65;&#114;&#103;&#101;&#110;&#116;
&#105;&#110;&#97;&#46;&#99;&#111;&#109;">
Diego N. Contin</a>
<!-- FIN -->
Uso del Foro
http://www.mvp-access.com/rubenvigon/foro/

Este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia

The documentation is provided to you "as is" without warranty of any kind.
The entire risk
usage and all it's consequences including data loss and hardware damage
are with you.

"En cuestiones de cultura y de saber, solo se pierde lo que se guarda;
solo se gana lo que se da". Antonio Machado

"Tres cosas que son el deber de todos: escuchar humildemente, responder
discretamente y juzgar bondadosamente."
Tríada celta.

"I wish I'd known that before I started writing all this code."
"Guillermo Peralta" escribió en el mensaje
news:
Hola Alfredo;

Necesitaria obtener los dos estados en un mismo Select, queria ver si
hay manera (seguro que si) de hacerlo sin subconsultas

Gracias


Alfredo Crisostomo ha escrito:

Pero te falta decir cual es el proposito de la consulta...









Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida