Ver Mensaje Individual
  #7 (permalink)  
Antiguo 21/03/2013, 11:28
Avatar de Libras
Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: Problema creacion base de datos reservaciones

tienes una tabla reservaciones que tiene los id horarios, solo tendrias que ver que horarios estan dispobibles para cierta mesa :).

algo como esto:

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. CREATE TABLE #reservaciones(
  13. id INT,
  14. id_horario INT,
  15. id_mesa INT,
  16. fecha VARCHAR(20)
  17. )
  18.  
  19. INSERT INTO #horarios VALUES (1,1,2)
  20. INSERT INTO #horarios VALUES (2,2,3)
  21. INSERT INTO #horarios VALUES (3,3,4)
  22. INSERT INTO #horarios VALUES (4,4,5)
  23.  
  24.  
  25. INSERT INTO #mesa VALUES (1,'mesa1')
  26. INSERT INTO #mesa VALUES (2,'mesa2')
  27. INSERT INTO #mesa VALUES (3,'mesa3')
  28. DELETE FROM #reservaciones
  29. INSERT INTO #reservaciones VALUES (1,1,1,CONVERT(VARCHAR(20),GETDATE(),101))
  30. INSERT INTO #reservaciones VALUES (2,2,1,CONVERT(VARCHAR(20),GETDATE(),101))
  31. INSERT INTO #reservaciones VALUES (5,3,1,CONVERT(VARCHAR(20),GETDATE(),101))
  32. INSERT INTO #reservaciones VALUES (6,1,2,CONVERT(VARCHAR(20),GETDATE(),101))
  33. INSERT INTO #reservaciones VALUES (7,3,2,CONVERT(VARCHAR(20),GETDATE(),101))
  34.  
  35. INSERT INTO #reservaciones VALUES (3,1,1,CONVERT(VARCHAR(20),dateadd(dd,1,GETDATE()),101))
  36. INSERT INTO #reservaciones VALUES (4,2,2,CONVERT(VARCHAR(20),dateadd(dd,1,GETDATE()),101))
  37.  
  38.  
  39.  
  40. --Horas ocupadas
  41. SELECT m.nombre,h.hora_inicio,h.hora_fin,r.fecha FROM #reservaciones AS r,#horarios AS h, #mesa AS m
  42. WHERE r.id_horario=h.id AND m.id=r.id_mesa AND fecha=CONVERT(VARCHAR(20),GETDATE(),101)
  43.  
  44. --Horas Libres
  45. SELECT DISTINCT hora_inicio,hora_fin,nombre,fecha FROM #reservaciones AS r,#horarios AS h, #mesa AS m
  46. WHERE fecha=CONVERT(VARCHAR(20),GETDATE(),101) AND CONVERT(VARCHAR(20),h.id) + '|' + CONVERT(VARCHAR(20),m.id) NOT IN (
  47. SELECT CONVERT(VARCHAR(20),id_horario) + '|' + CONVERT(VARCHAR(20),id_mesa) FROM #horarios,#reservaciones WHERE #horarios.id=#reservaciones.id_horario AND #reservaciones.fecha=CONVERT(VARCHAR(20),GETDATE(),101)
  48. )
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me