Ver Mensaje Individual
  #6 (permalink)  
Antiguo 08/02/2011, 13:47
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 18 años, 2 meses
Puntos: 447
Respuesta: Ayuda con WHERE

Hola Foxaurus:

Según los datos que pusiste de ejemplo y la explicación del problema, el resultado entonces tendrían que ser los hoteles 1 y 3 (o 101 y 103 por sus claves) ya que el hotel 2 posee sólo el servicio 202 pero no el 204 correcto???

Creo que la consulta quedaría más o menos así:

Código:
select * from HOTEL_SERVICIO where 
CHotel in (
select CHotel from HOTEL_SERVICIO where Cser = 202
) and Cser = 204
Lo único que te faltaría por hacer sería un INNER JOIN con la tabla HOTEL para obtener la descripción del Hotel.

Código MySQL:
Ver original
  1. mysql> create table HOTEL (Chotel int, Nhotel varchar(50));
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into HOTEL values (101, 'Hotel1'), (102, 'Hotel2'), (103, 'Hotel3'
  5. ), (104, 'Hotel4');
  6. Query OK, 4 rows affected (0.05 sec)
  7. Records: 4  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> select * from HOTEL;
  10. +--------+--------+
  11. | Chotel | Nhotel |
  12. +--------+--------+
  13. |    101 | Hotel1 |
  14. |    102 | Hotel2 |
  15. |    103 | Hotel3 |
  16. |    104 | Hotel4 |
  17. +--------+--------+
  18. 4 rows in set (0.00 sec)
  19.  
  20. mysql> create table HOTEL_SERVICIO(Chotel int, Cser int);
  21. Query OK, 0 rows affected (0.09 sec)
  22.  
  23. mysql> insert into HOTEL_SERVICIO values (101, 201),(101, 202),(101, 204),(101,
  24. 205),(101, 208),(102, 201),(102, 202),(103, 202),(103, 204),(103, 207),(104, 201
  25. ),(104, 203);
  26. Query OK, 12 rows affected (0.03 sec)
  27. Records: 12  Duplicates: 0  Warnings: 0
  28.  
  29. mysql> select * from HOTEL_SERVICIO;
  30. +--------+------+
  31. | Chotel | Cser |
  32. +--------+------+
  33. |    101 |  201 |
  34. |    101 |  202 |
  35. |    101 |  204 |
  36. |    101 |  205 |
  37. |    101 |  208 |
  38. |    102 |  201 |
  39. |    102 |  202 |
  40. |    103 |  202 |
  41. |    103 |  204 |
  42. |    103 |  207 |
  43. |    104 |  201 |
  44. |    104 |  203 |
  45. +--------+------+
  46. 12 rows in set (0.00 sec)
  47.  
  48. mysql> select Chotel from HOTEL_SERVICIO where
  49.     -> CHotel in (
  50.     -> select CHotel from HOTEL_SERVICIO where Cser = 202
  51.     -> ) and Cser = 204;
  52. +--------+
  53. | Chotel |
  54. +--------+
  55. |    101 |
  56. |    103 |
  57. +--------+
  58. 2 rows in set (0.00 sec)
  59.  
  60. mysql>

EDITADO: No se me había ocurrido la solución que plantea el compañero jurena, pero me parece más optima que la que propuse. Enhorabuena


Saludos
Leo

Última edición por leonardo_josue; 08/02/2011 a las 13:53