Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2013, 23:07
losaltlv
 
Fecha de Ingreso: abril-2012
Ubicación: surquillo
Mensajes: 44
Antigüedad: 12 años
Puntos: 0
Error al mostrar horas

Hola a todos una consulta como hago para que me muestre las horas disponibles y de una mesa por un determinada fecha el script q tengo me da el resultado pero me vota el mismo resultado cuando quiero ver las horas de las mesas reservadas en otras fechas .. Gracias
Código SQL:
Ver original
  1. CREATE DATABASE ULTIMARESE
  2. GO
  3. USE ULTIMARESE
  4.  
  5. DROP TABLE MESA
  6. DROP TABLE HORARIOS
  7. DROP TABLE RESERVACIONES
  8. DROP TABLE #horarios_ocupados
  9. DROP TABLE #temp
  10.  
  11. CREATE TABLE MESA(
  12. COD_MESA INT IDENTITY(1,1)PRIMARY KEY,
  13. MESA_DESC VARCHAR(30) ,
  14. MESA_SILLAS INT ,
  15. SEDE_COD CHAR(6),
  16. MESA_FILA INT,
  17. MESA_COLUMNA INT,
  18. MESA_ESTADO CHAR(1) ,
  19. MESA_TIPO   CHAR(1),
  20. MESA_PRECIO DECIMAL(7,2),
  21. MESA_IMG VARCHAR(20)
  22. )
  23. GO
  24. INSERT INTO MESA VALUES('MESA D-30',12,'SED004',6,5,'2','0',10.00,'MESA_12.jpg')
  25. INSERT INTO MESA VALUES('MESA D-31',12,'SED004',6,5,'2','0',10.00,'MESA_12.jpg')
  26. GO
  27. SELECT * FROM MESA
  28. GO
  29.  
  30. CREATE TABLE HORARIOS(
  31. COD_HORA INT IDENTITY(1,1)PRIMARY KEY,
  32. HORA_INICIO TIME
  33. )
  34.  
  35. INSERT INTO HORARIOS VALUES ('08:00')
  36. INSERT INTO HORARIOS VALUES ('09:00')
  37. INSERT INTO HORARIOS VALUES ('10:00')
  38. INSERT INTO HORARIOS VALUES ('11:00')
  39. INSERT INTO HORARIOS VALUES ('12:00')
  40. INSERT INTO HORARIOS VALUES ('13:00')
  41. INSERT INTO HORARIOS VALUES ('14:00')
  42. INSERT INTO HORARIOS VALUES ('15:00')
  43. INSERT INTO HORARIOS VALUES ('16:00')
  44. INSERT INTO HORARIOS VALUES ('17:00')
  45. INSERT INTO HORARIOS VALUES ('18:00')
  46. INSERT INTO HORARIOS VALUES ('19:00')
  47. INSERT INTO HORARIOS VALUES ('20:00')
  48. INSERT INTO HORARIOS VALUES ('21:00')
  49. GO
  50. SELECT * FROM HORARIOS
  51. GO
  52.  
  53. CREATE TABLE RESERVACIONES(
  54. COD_RESE INT IDENTITY(1,1)PRIMARY KEY,
  55. RESE_REGISTRO   DATE ,
  56. RESE_FECHA  DATE ,
  57. RESE_NPER   INT ,
  58. HORA_COD    INT ,
  59. RESE_HORAS  TIME ,
  60. RESE_ESTADO CHAR(1),
  61. CLI_COD CHAR(6)NULL,
  62. MESA_COD INT,
  63. CONSTRAINT FK_RESER_HORA FOREIGN KEY (HORA_COD) REFERENCES HORARIOS(COD_HORA),
  64. CONSTRAINT FK_RESER_MESA FOREIGN KEY (MESA_COD) REFERENCES MESA(COD_MESA)
  65. )
  66. GO
  67. SELECT RESE_HORAS,HORA_COD FROM RESERVACIONES
  68. GO
  69. INSERT INTO RESERVACIONES VALUES (GETDATE(),dateadd(DAY,2,GETDATE()),4,2,'11:00','0','CLI001',1)
  70. INSERT INTO RESERVACIONES VALUES (GETDATE(),dateadd(DAY,1,GETDATE()),4,3,'11:00','0','CLI001',1)
  71. INSERT INTO RESERVACIONES VALUES (GETDATE(),GETDATE(),4,1,'10:00','0','CLI001',1)
  72. INSERT INTO RESERVACIONES VALUES (GETDATE(),GETDATE(),4,3,'12:00','0','CLI001',2)
  73. INSERT INTO RESERVACIONES VALUES (GETDATE(),GETDATE(),4,1,'10:00','0','CLI001',1)
  74.  
  75. GO
  76. --Horas ocupadas
  77. SELECT M.MESA_DESC,H.HORA_INICIO,R.RESE_HORAS,R.RESE_FECHA
  78. FROM RESERVACIONES AS r,HORARIOS AS h, MESA AS m
  79. WHERE R.HORA_COD=H.COD_HORA AND M.COD_MESA=R.MESA_COD AND R.RESE_fECHA='04/05/2013'--   convert(varchar(20),GETDATE(),101)
  80. AND MESA_COD=COD_MESA AND H.COD_HORA IN (SELECT COD_HORA
  81. FROM HORARIOS WHERE (HORA_INICIO BETWEEN '00:00' AND '23:00') AND (R.RESE_HORAS
  82.  BETWEEN  '00:00' AND '23:00') )
  83. ORDER BY M.MESA_DESC
  84.  
  85. --Horas Libres
  86.  
  87. DROP TABLE #temp
  88. DROP TABLE #horarios_ocupados
  89.  
  90. SELECT HORA_INICIO,RESE_HORAS,MESA_COD,RESE_FECHA,IDENTITY(INT,1,1) AS rn INTO #temp
  91. FROM HORARIOS,RESERVACIONES
  92. WHERE HORARIOS.COD_HORA=RESERVACIONES.HORA_COD
  93.  
  94. SELECT * FROM #temp
  95.  
  96. CREATE TABLE #horarios_ocupados
  97. (
  98. id INT,
  99. id_mesa INT,
  100. r_fecha DATE
  101. )
  102.  
  103. DECLARE @x INT
  104. DECLARE @id_mesa INT
  105. DECLARE @fecha VARCHAR(20)
  106. SET @x=1
  107. SET @id_mesa=0
  108. SET @fecha='04/05/2013'
  109. while @x<=(SELECT COUNT(*) FROM #temp)
  110. BEGIN
  111. SELECT @id_mesa=MESA_COD FROM #temp WHERE rn=@x
  112. INSERT INTO #horarios_ocupados
  113. SELECT COD_HORA,@id_mesa,@fecha FROM HORARIOS h,#temp t
  114. WHERE h.HORA_INICIO BETWEEN (SELECT HORA_INICIO FROM #temp WHERE rn=@x)
  115. AND (SELECT RESE_HORAS FROM #temp WHERE rn=@x)AND RESE_FECHA='04/05/2013'
  116. SET @x=@x+1
  117. END
  118.  
  119.  
  120. SELECT DISTINCT HORA_INICIO,MESA_DESC,RESE_FECHA FROM RESERVACIONES AS r,HORARIOS AS h, MESA AS m,#horarios_ocupados
  121. WHERE RESE_FECHA='04/06/2013'--convert(varchar(20),GETDATE(),101) AND RESE_NPER NOT BETWEEN 0 AND 4-1
  122. AND CONVERT(VARCHAR(20),H.COD_HORA) + '|' + CONVERT(VARCHAR(20),M.COD_MESA) NOT IN (
  123. SELECT CONVERT(VARCHAR(20),id) + '|' + CONVERT(VARCHAR(20),id_mesa)
  124. FROM #horarios_ocupados)
  125. ORDER BY MESA_DESC
  126.  
  127. DELETE FROM #horarios_ocupados
  128. SELECT * FROM MESA
  129. SELECT * FROM RESERVACIONES
  130. SELECT * FROM HORARIOS
  131. SELECT * FROM #temp
  132. SELECT * FROM #horarios_ocupados
  133.  
  134. GO
  135.  
  136.  
  137. DROP TABLE MESA
  138. DROP TABLE HORARIOS
  139. DROP TABLE RESERVACIONES
  140. DROP TABLE #horarios_ocupados
  141. DROP TABLE #temp
  142.  
  143. USE SR_OOD

Última edición por gnzsoloyo; 05/04/2013 a las 04:26 Razón: SQL sin etiquetar. Mayusculas en todo el texto son girtos...