Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

query con 3 tablas

Estas en el tema de query con 3 tablas en el foro de SQL Server en Foros del Web. hola amigos tengo una duda con un query esper alguien me pueda ayudar tengo 3 tablas una de clientes una de rentas y una de ...
  #1 (permalink)  
Antiguo 04/01/2012, 03:04
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
query con 3 tablas

hola amigos tengo una duda con un query esper alguien me pueda ayudar
tengo 3 tablas una de clientes una de rentas y una de peliculas

en la tabla REnta tengo los siguientes campos
idrenta
idcliente
idpelicula

y en la tabla pelicula tengo los campos de
idpelicula
nombre
etc

bueno lo ke kiero es,, hacer una consulta que me arrojo
todas las peliculas que tengo en catalogo de peliculas
pero con uan columna adicional diciendome si esta rentada o no
y por que cliente

espero alguien pueda ayudarme se lo agradecere INFINITAMENTE
__________________
si siempre hay algo nuevo que aprender
  #2 (permalink)  
Antiguo 04/01/2012, 05:02
Avatar de azimutisima  
Fecha de Ingreso: mayo-2011
Mensajes: 107
Antigüedad: 13 años
Puntos: 14
Respuesta: query con 3 tablas

Bueno me entretuve recreando el entorno y creo que lo que quieres es esto:

Cita:
select p.id, p.Nombre, IF(r.id is null ,'No alquilada', 'Alquilada'),ifnull(c.Nombre,'')
from tempCliente c
inner join temprenta r
on c.id = r.idCliente
right join tempPelicula p
on r.idPelicula = p.id
__________________
Si te gusto mi respuesta anímame a continuar dandome un voto.
  #3 (permalink)  
Antiguo 04/01/2012, 07:48
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: query con 3 tablas

una alternativa..

Código:
if OBJECT_ID('tempdb..#rentas') is not null drop table #rentas

create table #rentas (
	idRenta int identity (1,1)
	,idPelicula int 
	,idCliente int
)


if OBJECT_ID('tempdb..#peliculas') is not null drop table #peliculas

create table #peliculas (
	idPelicula int  identity (1,1)
	,nombre varchar(100) 
)

if OBJECT_ID('tempdb..#clientes') is not null drop table #clientes

create table #clientes (
	idPelicula int  identity (1,1)
	,nombre varchar(100) 
)

insert into #peliculas (nombre)values ('Pel 1 '),('Pel 2 '),('Pel 3 '),('Pel 4 '),('Pel 5 ')
insert into #clientes(nombre) values ('Cli 100'),('Cli 200'),('Cli 300'),('Cli 400')
insert into #rentas(idCliente,idPelicula) values(1,2),(1,3),(2,5)

select p.idPelicula
		,p.nombre
		,case when r.idPelicula is null then '<No Rent>' else ISNULL(c.nombre,'') end Rentada  
from   #peliculas p
left join #rentas r
on p.idPelicula = r.idPelicula
left join #clientes c
on r.idCliente = c.idPelicula

idPelicula  nombre  Rentada
----------- ------- ------------
1           Pel 1   <No Rent>
2           Pel 2   Cli 100
3           Pel 3   Cli 100
4           Pel 4   <No Rent>
5           Pel 5   Cli 200

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #4 (permalink)  
Antiguo 04/01/2012, 09:21
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: query con 3 tablas

Hola que tal, para esto te serviria el JOIN

SELECT a.Pelicula
FROM idrenta AS a (NOLOCK)
JOIN idpelicula AS b (NOLOCK) ON ( a.Pelicula = b.Pelicula )

También te pueden servir el Left Join o el Right Join
  #5 (permalink)  
Antiguo 04/01/2012, 16:24
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: query con 3 tablas

Cita:
Iniciado por azimutisima Ver Mensaje
Bueno me entretuve recreando el entorno y creo que lo que quieres es esto:
amigo te lo agradescoo, con eso me funciono..
solo modifique mis campos jaja..pero es eso lo que pretendia hacer
te lo agradescoo mucho

saludos
__________________
si siempre hay algo nuevo que aprender
  #6 (permalink)  
Antiguo 04/01/2012, 22:08
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: query con 3 tablas

me marcan algunos errores...estas son mis tablas

tblClientes
----------------
IDCliente
Nombre

tblPeliculas
---------------
IDPelicula
Nombre

tblRentas
-----------------
IDRenta
IDPelicula
IDCliente

lo que pretendo hacer es una consulta donde el resultado me arroje
IDPelicula, si esta o no esta Rentada, IDCliente en caso de.

con esta consulta muestro las peliculas que esten en Renta
Cita:
select * from tblPeliculas where IDPelicula = (Select IDPelicula from tblRentas)
pero lo que quiero es mostrar tanto las rentadas como las no rentadas, pero informando en una columna si esta o no esta rentadada

Gracias por sus respuestas
__________________
si siempre hay algo nuevo que aprender
  #7 (permalink)  
Antiguo 09/01/2012, 06:42
Avatar de azimutisima  
Fecha de Ingreso: mayo-2011
Mensajes: 107
Antigüedad: 13 años
Puntos: 14
Respuesta: query con 3 tablas

Cita:
lo que pretendo hacer es una consulta donde el resultado me arroje
IDPelicula, si esta o no esta Rentada, IDCliente en caso de.
Si no recurdo mál eso es lo que hacia mi consulta, ¿pq ahora no te vale?
__________________
Si te gusto mi respuesta anímame a continuar dandome un voto.
  #8 (permalink)  
Antiguo 10/01/2012, 14:30
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: query con 3 tablas

Hola, a la hora de unir y o comparar tablas hay que tener en cuenta los campos "NULL", es tan sólo una sugerencia...

Saludos
  #9 (permalink)  
Antiguo 10/01/2012, 16:17
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: query con 3 tablas

Hola que tal, que error es el que te arroja?

Si vas a poner campos que pueden ser (NULL) tienes que validarlos

SELECT CASE WHEN ISNULL a.Pelicula THEN ' ' ELSE a.Pelicula END
FROM Peliculas
  #10 (permalink)  
Antiguo 11/01/2012, 02:45
Avatar de azimutisima  
Fecha de Ingreso: mayo-2011
Mensajes: 107
Antigüedad: 13 años
Puntos: 14
Respuesta: query con 3 tablas

vale, si da igual, parece que ya no vuelve, pero al menos antes de postear más respuestas VER TODO EL POST para no repetiros (1.era respuesta, la mía incluye control de los NULL, ahha y right join e inner join drako_darpan!!!)
__________________
Si te gusto mi respuesta anímame a continuar dandome un voto.

Etiquetas: query, tabla, tablas, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:15.