Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/04/2013, 09:31
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 al mostrar horas

me gusta ver mi codigo implementado jejeje :)

creo que no has entendido nada de mi codigo :(


Este codigo lo que hace es sacarte las mesas libres por "DIA" solo por cada dia, por eso te he recomendado que hagas una funcion con toooodo este codigo, si buscas resultados de dias diferentes al que pusiste en la tabla de #horarios_ocupados no los vas a encontrar porque? porque esa tabla maneja los datos por "DIA"

Código SQL:
Ver original
  1. --Horas Libres
  2.  
  3. DROP TABLE #temp
  4. DROP TABLE #horarios_ocupados
  5.  
  6. SELECT HORA_INICIO,RESE_HORAS,MESA_COD,RESE_FECHA,IDENTITY(INT,1,1) AS rn INTO #temp
  7. FROM HORARIOS,RESERVACIONES
  8. WHERE HORARIOS.COD_HORA=RESERVACIONES.HORA_COD
  9.  
  10. SELECT * FROM #temp
  11.  
  12. CREATE TABLE #horarios_ocupados
  13. (
  14. id INT,
  15. id_mesa INT,
  16. r_fecha DATE
  17. )
  18.  
  19. DECLARE @x INT
  20. DECLARE @id_mesa INT
  21. DECLARE @fecha VARCHAR(20)
  22. SET @x=1
  23. SET @id_mesa=0
  24. SET @fecha='04/05/2013'
  25. while @x<=(SELECT COUNT(*) FROM #temp)
  26. BEGIN
  27. SELECT @id_mesa=MESA_COD FROM #temp WHERE rn=@x
  28. INSERT INTO #horarios_ocupados
  29. SELECT COD_HORA,@id_mesa,@fecha FROM HORARIOS h,#temp t
  30. WHERE h.HORA_INICIO BETWEEN (SELECT HORA_INICIO FROM #temp WHERE rn=@x)
  31. AND (SELECT RESE_HORAS FROM #temp WHERE rn=@x)AND RESE_FECHA='04/05/2013'
  32. SET @x=@x+1
  33. END


-------------

con la explicacion pasada creo que comprenderas que aqui no puedes buscar resultados diferentes del dia 04/05/2013

-----------------------------

Código SQL:
Ver original
  1. SELECT DISTINCT HORA_INICIO,MESA_DESC,RESE_FECHA FROM RESERVACIONES AS r,HORARIOS AS h, MESA AS m,#horarios_ocupados
  2. WHERE RESE_FECHA='04/06/2013'--convert(varchar(20),GETDATE(),101) AND RESE_NPER NOT BETWEEN 0 AND 4-1
  3. AND CONVERT(VARCHAR(20),H.COD_HORA) + '|' + CONVERT(VARCHAR(20),M.COD_MESA) NOT IN (
  4. SELECT CONVERT(VARCHAR(20),id) + '|' + CONVERT(VARCHAR(20),id_mesa)
  5. FROM #horarios_ocupados)
  6. ORDER BY MESA_DESC

Ahora el codigo que te pase puedes implementarlo en tu aplicacion pero como una funcion no como TSQL porque no te funcionaria en una aplicacion web.....ya tienes el codigo suficiente para hacer tu proceso es solo que juegues un poco con el y entiendas realmente que hace...

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me