Ver Mensaje Individual
  #13 (permalink)  
Antiguo 26/03/2013, 10:50
Avatar de Libras
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: error creacion tablas horario y mesas

aqui lo que podrias hacer seria tener en tu tabla de horarios la hora inicio y la hora final, y en tu tabla de reservaciones poner algo asi:

tu capturas la hora inicial y la hora final digamos(con datos de hora 1,2,3) que la hora de ingreso es la 1 y la de salida las 3 asi que la mesa estara apartada todo el tiempo entre la hora 1 y la 3.

algo asi:


Código SQL:
Ver original
  1. CREATE TABLE #horarios(
  2. id INT,
  3. hora_inicio INT,
  4. hora_fin INT
  5. )
  6.  
  7. CREATE TABLE #mesa(
  8. id INT,
  9. nombre VARCHAR(10)
  10. )
  11.  
  12. --drop table #reservaciones
  13. CREATE TABLE #reservaciones(
  14. id INT,
  15. id_horario_i INT,
  16. id_horario_f INT,
  17. id_mesa INT,
  18. fecha VARCHAR(20)
  19. )
  20.  
  21.  
  22. INSERT INTO #horarios VALUES (1,1,2)
  23. INSERT INTO #horarios VALUES (2,2,3)
  24. INSERT INTO #horarios VALUES (3,3,4)
  25. INSERT INTO #horarios VALUES (4,4,5)
  26.  
  27.  
  28. INSERT INTO #mesa VALUES (1,'mesa1')
  29. INSERT INTO #mesa VALUES (2,'mesa2')
  30. INSERT INTO #mesa VALUES (3,'mesa3')
  31.  
  32. INSERT INTO #reservaciones VALUES (1,1,2,1,CONVERT(VARCHAR(20),GETDATE(),101))
  33. INSERT INTO #reservaciones VALUES (1,3,4,1,CONVERT(VARCHAR(20),GETDATE(),101))
  34.  
  35.  
  36.  
  37.  
  38.  
  39. --Horas ocupadas
  40. SELECT m.nombre,h.hora_inicio,h.hora_fin,r.fecha FROM #reservaciones AS r,#horarios AS h, #mesa AS m
  41. WHERE r.id_horario_i=h.id AND m.id=r.id_mesa AND fecha=CONVERT(VARCHAR(20),GETDATE(),101)
  42. AND id_mesa=1 AND h.id IN (SELECT id FROM #horarios WHERE (hora_inicio BETWEEN 1 AND 5) AND (hora_fin
  43.  BETWEEN 1 AND 5) )
  44. ORDER BY m.nombre
  45.  
  46. --Horas Libres
  47. SELECT DISTINCT hora_inicio,hora_fin,nombre,fecha FROM #reservaciones AS r,#horarios AS h, #mesa AS m
  48. WHERE fecha=CONVERT(VARCHAR(20),GETDATE(),101) AND CONVERT(VARCHAR(20),h.id) + '|' + CONVERT(VARCHAR(20),m.id) NOT IN (
  49. SELECT CONVERT(VARCHAR(20),id_horario_i) + '|' + CONVERT(VARCHAR(20),id_mesa) FROM #horarios,#reservaciones WHERE #horarios.id=#reservaciones.id_horario_i AND #reservaciones.fecha=CONVERT(VARCHAR(20),GETDATE(),101)
  50. )
  51. ORDER BY nombre
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me