Sigo enredado con SQL

24/06/2005 - 20:12 por Mauricio López [uy] | Informe spam
Gente:

Lo del asunto es totalmente cierto, hace casi 1 hora que estoy
tratando de descifrar una consulta, apelo a su sabiduría para lograr
hacerlo.

Se trata de una tabla InmProp que tiene 3 campos
IdPropiedad - PK
IdInmobiliaria - PK
IdInmobiliaria2 - no requerido

Quisiera obtener dado un IdInmobiliaria todas las Propiedades
que ella posee y además aquellas en las cuales la cantidad de
Inmobiliarias asociadas no llegue a 3 contándose también
IdInmobiliaria2.

He llegado hasta aquí:

SELECT *
FROM Propiedades P
INNER JOIN InmProp IP
ON IP.IdPropiedad = P.Id
WHERE IdInmobiliaria = (*valor*)
UNION

Les agradecería infinitamente si me pudieran ayudar dado que me
urge entregar el programa.


Saludos!

Mauricio López
Maldonado - Uruguay

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/06/2005 - 20:16 | Informe spam
Mauricio,

Quisiera obtener dado un IdInmobiliaria todas las Propiedades
que ella posee y además aquellas en las cuales la cantidad de
Inmobiliarias asociadas no llegue a 3 contándose también
IdInmobiliaria2.



Para mi no es suficiente con la descripcion de lo que quieres, pues no tengo
la menor idea de lo significa una inmobiliaria asociada. Pudieras postear un
ejemplo, para comprender mejor tu requerimiento?


AMB

"Mauricio López [uy]" wrote:

Gente:

Lo del asunto es totalmente cierto, hace casi 1 hora que estoy
tratando de descifrar una consulta, apelo a su sabiduría para lograr
hacerlo.

Se trata de una tabla InmProp que tiene 3 campos
IdPropiedad - PK
IdInmobiliaria - PK
IdInmobiliaria2 - no requerido

Quisiera obtener dado un IdInmobiliaria todas las Propiedades
que ella posee y además aquellas en las cuales la cantidad de
Inmobiliarias asociadas no llegue a 3 contándose también
IdInmobiliaria2.

He llegado hasta aquí:

SELECT *
FROM Propiedades P
INNER JOIN InmProp IP
ON IP.IdPropiedad = P.Id
WHERE IdInmobiliaria = (*valor*)
UNION

Les agradecería infinitamente si me pudieran ayudar dado que me
urge entregar el programa.


Saludos!

Mauricio López
Maldonado - Uruguay


Respuesta Responder a este mensaje
#2 Mauricio López [uy]
24/06/2005 - 21:00 | Informe spam
Alejandro:

Lo explico mejor:

IdPropiedad - PK - es un clave foránea ya que es la clave principal
de la tabla Propiedades
IdInmobiliaria - PK - es un clave foránea ya que es la clave
principal de la tabla Inmobiliarias
IdInmobiliaria2 - no requerido -es un clave foránea ya que es la clave
principal de la tabla Propiedades

Ejemplo con datos:

1 registro:
IdPropiedad = 1
IdInmobiliaria = 3
IdInmobiliaria2=0

2º registro:

IdPropiedad = 1
IdInmobiliaria = 4
IdInmobiliaria2=2

La propiedad Id=1 tiene 3 Inmobiliarias asociadas que son la
Inmobiliaria 3, la 4 y la 2.

Quisiera obtener dado un IdInmobiliaria todas los Propiedades
que ella posee y además aquellas en las cuales la cantidad de
Inmobiliarias asociadas no llegue a 3 contándose también
IdInmobiliaria2.

Espero haber dejado las cosas más clara, ya que con la confusión
mía, me cuesta hasta explicarlo, jaaja!!

Saludos!

Mauricio López
Maldonado - Uruguay
-
Para mi no es suficiente con la descripcion de lo que quieres, pues no
tengo
la menor idea de lo significa una inmobiliaria asociada. Pudieras
postear un
ejemplo, para comprender mejor tu requerimiento?


AMB

"Mauricio López [uy]" wrote:

Gente:

Lo del asunto es totalmente cierto, hace casi 1 hora que estoy
tratando de descifrar una consulta, apelo a su sabiduría para lograr
hacerlo.

Se trata de una tabla InmProp que tiene 3 campos
IdPropiedad - PK
IdInmobiliaria - PK
IdInmobiliaria2 - no requerido

Quisiera obtener dado un IdInmobiliaria todas las Propiedades
que ella posee y además aquellas en las cuales la cantidad de
Inmobiliarias asociadas no llegue a 3 contándose también
IdInmobiliaria2.

He llegado hasta aquí:

SELECT *
FROM Propiedades P
INNER JOIN InmProp IP
ON IP.IdPropiedad = P.Id
WHERE IdInmobiliaria = (*valor*)
UNION

Les agradecería infinitamente si me pudieran ayudar dado que


me
urge entregar el programa.


Saludos!

Mauricio López
Maldonado - Uruguay


Respuesta Responder a este mensaje
#3 Mauricio López [uy]
24/06/2005 - 21:06 | Informe spam
Debí decir:
IdInmobiliaria2 - no requerido -es un clave foránea ya que es la clave
principal de la tabla Inmobiliarias
Respuesta Responder a este mensaje
#4 Alejandro Mesa
24/06/2005 - 21:33 | Informe spam
Mauricio,

Entonces dejame refrasear la pregunta para ver si entendi esta vez.

Dado un valor de [IdInmobiliaria], quieres seleccionar todas sus
propiedades, cuyas inmobiliarias asociadas, incluyendo [IdInmobiliaria2], no
sean mas de tres?

declare @IdInmobiliaria int

set @IdInmobiliaria = 3

select
p.*
from
Propiedades as p
inner join
(
select
IdPropiedad
from
InmProp as a
where
IdInmobiliaria = @IdInmobiliaria
and (
select
sum(1 + case when b.IdInmobiliaria2 != 0 then 1 else 0 end)
from
InmProp
where
b.IdPropiedad = a.IdPropiedad
) <= 3
) as t1
on p.IdPropiedad = t1.IdPropiedad
go

Si puedes cambia la definicion de la tabla [InmProp], esta no cumple con la
primera forma normal. Debes eliminar la columna [IdInmobiliaria2] y adicionar
las tuplas (IdPropiedad, IdInmobiliaria) como filas de la tabla.


AMB


"Mauricio López [uy]" wrote:

Debí decir:
IdInmobiliaria2 - no requerido -es un clave foránea ya que es la clave
principal de la tabla Inmobiliarias


Respuesta Responder a este mensaje
#5 Mauricio López [uy]
25/06/2005 - 03:43 | Informe spam
Plas plas plas plas, voy a probarlo.

Muchas gracias.

Saludos!

Mauricio López
Maldonado - Uruguay
-
Mauricio,

Entonces dejame refrasear la pregunta para ver si entendi esta vez.

Dado un valor de [IdInmobiliaria], quieres seleccionar todas sus
propiedades, cuyas inmobiliarias asociadas, incluyendo
[IdInmobiliaria2], no
sean mas de tres?

declare @IdInmobiliaria int

set @IdInmobiliaria = 3

select
p.*
from
Propiedades as p
inner join
(
select
IdPropiedad
from
InmProp as a
where
IdInmobiliaria = @IdInmobiliaria
and (
select
sum(1 + case when b.IdInmobiliaria2 != 0 then 1 else 0 end)
from
InmProp
where
b.IdPropiedad = a.IdPropiedad
) <= 3
) as t1
on p.IdPropiedad = t1.IdPropiedad
go

Si puedes cambia la definicion de la tabla [InmProp], esta no cumple con
la
primera forma normal. Debes eliminar la columna [IdInmobiliaria2] y
adicionar
las tuplas (IdPropiedad, IdInmobiliaria) como filas de la tabla.


AMB


"Mauricio López [uy]" wrote:

Debí decir:
IdInmobiliaria2 - no requerido -es un clave foránea ya que es la


clave
principal de la tabla Inmobiliarias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida