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

Mostrar registros que no cumplan todas las condiciones

Estas en el tema de Mostrar registros que no cumplan todas las condiciones en el foro de SQL Server en Foros del Web. Hola, quiero hacer una query con tablas unidas donde de una tabla "habitaciones" saco la lista con los nombres de la habitaciones de un hotel ...
  #1 (permalink)  
Antiguo 24/12/2014, 09:13
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Mostrar registros que no cumplan todas las condiciones

Hola,

quiero hacer una query con tablas unidas donde de una tabla "habitaciones" saco la lista con los nombres de la habitaciones de un hotel y otra tabla "reservas" con el id_habitacion y los datos de la reserva.
Lo que quiero es que me muestre toda la lista de habitaciones tengan o no tengan una reserva.


es posible hacer eso??

gracias
  #2 (permalink)  
Antiguo 24/12/2014, 09:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mostrar registros que no cumplan todas las condiciones

Por supuesto... Para eso se usa LEFT JOIN, ¿podrías mostrar como la haces para poder guiarte mejor?
Es preferible que los que preguntan muestren lo que hacen, para no andar dando consejos sobre ejemplos que no apliquen a su caso.

Como dicen las normas del foro de BBDD:
Cita:
- Postear las consultas realizadas por su cuenta, las pruebas fallidas propias. Si no se ve lo que se intentó hacer, es difícil saber qué falla, o que cosas ya se probaron.
- Es conveniente postear estructuras de tablas, entendiendo por tal a los CREATE TABLE de las tablas que se usan, ya que en las descripciones se suele omitir información importante.
- Puede ser necesario que posteen algunos datos de muestra, para tener claro qué se está usando y como.
- Muy importante es describir lo más exactamente cuál es el resultado que se desea obtener en las consultas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/12/2014, 06:07
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mostrar registros que no cumplan todas las condiciones

No he trabajado con joins asi que lo hago con alias
Código SQL:
Ver original
  1. SELECT A.NOM_SECTOR,B.NOM_HABITACION,C.ESTADO
  2. FROM SECTOR A,HABITACION B,RESERVA C
  3. WHERE A.ID_SECTOR=B.FK_IDSECTOR
  4.             AND C.ID_HABITACION=C.FK_IDHABITACION

quiero que se muestren todas las habitaciones aunque nunca hayan sido reservadas y por lo tanto no tengas registros en la tabla reservas

Última edición por gnzsoloyo; 26/12/2014 a las 06:45
  #4 (permalink)  
Antiguo 26/12/2014, 08:01
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar registros que no cumplan todas las condiciones

usa joins explicitos, en lugar de implicitos esto es algo como esto:

Código SQL:
Ver original
  1. SELECT A.NOM_SECTOR,B.NOM_HABITACION,C.ESTADO
  2. FROM SECTOR A
  3. LEFT JOIN HABITACION B ON (A.ID_SECTOR=B.FK_IDSECTOR)
  4. LEFT JOIN RESERVA (C.ID_HABITACION=C.FK_IDHABITACION)

Pregunta, esta bien esto C.ID_HABITACION=C.FK_IDHABITACION???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 26/12/2014, 09:20
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mostrar registros que no cumplan todas las condiciones

Lo siento esta mal,debe ser:

Código SQL:
Ver original
  1. SELECT A.NOM_SECTOR,B.NOM_HABITACION,C.ESTADO
  2. FROM SECTOR A,HABITACION B,RESERVA C
  3. WHERE A.ID_SECTOR=B.FK_IDSECTOR
  4.             AND B.ID_HABITACION=C.FK_IDHABITACION

LAS TABLAS SON:

SECTOR HABITACION RESERVAS
----------- ----------- -----------------
ID_SECTOR ID_HABITACION ID_RESERVA
NOM_SECTOR FK_IDSECTOR FECHA
NOM_HABITACION FK_IDHABITACION
ESTADO

Última edición por gnzsoloyo; 26/12/2014 a las 09:21 Razón: Por favor, usar el Highlight correcto. "CODE" no es para SQL.
  #6 (permalink)  
Antiguo 26/12/2014, 09:22
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar registros que no cumplan todas las condiciones

trata usando los left joins como te mencione
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 28/12/2014, 16:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mostrar registros que no cumplan todas las condiciones

gracias me anduvo muy bien.
Pero tengo otra pregunta: cuando hay habitaciones con mas de una reservas se repiten las filas, hay forma de que cuando hayan mas reservas estas se muestren en columnas en vez de filas con el mismo numero de habitacion?
  #8 (permalink)  
Antiguo 29/12/2014, 08:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar registros que no cumplan todas las condiciones

un ejemplito de tus datos ayudaria :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 29/12/2014, 12:24
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mostrar registros que no cumplan todas las condiciones

una query algo asi:

Código SQL:
Ver original
  1. SELECT SECTOR.NOM_SECTOR + ' '+ HABITACION.NUM_HABITACION AS     HABITACION,RESERVA.FECHA
  2. FROM SECTOR,HABITACION,RESERVA
  3. WHERE SECTOR.ID_SECTOR=HABITACION.FK_IDSECTOR AND HABITACION.ID_HABITACION=RESERVA.FK_IDHABITACION

quiero que me muetre los resultados asi:

SECTOR NORTE HABITACION 101 11/05/2014
SECTOR SUR HABITACION 202 15/05/2014 16/06/2014
SECTOR NORTE HABITACION 301 NULL

que en caso de haber mas de una reserva por habitacion que se genere otra columna en vez de una fila
  #10 (permalink)  
Antiguo 29/12/2014, 12:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Mostrar registros que no cumplan todas las condiciones

sigues haciendo joins explicitos usa mejor los joins implicitos, y de tu duda, no se que resultados arroja el primer query para poder decirte como dejarlos como tu quieres....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 29/12/2014, 12:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 94
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Mostrar registros que no cumplan todas las condiciones

lo se es que cambie un poco mi query, y como tengo que concatenar la campos de la tabla sector y habitacion ya me entro la confucion y puse este ejemplo sin left join porque no estoy seguro de como usarlo en este caso

Etiquetas: condiciones, registros, tabla, todas
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 21:02.