Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/03/2013, 05:45
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Error al crear base de datos reservacion de mesa por hora

No hablo bien Castellano, y lamentablemente muchas palabras de tu mensaje no aparecen en mi diccionario..

Espero que tu puedas entender mi Castellano y mi TSQL:

Código SQL:
Ver original
  1. CREATE TABLE CLIENTES(
  2. COD_CLI CHAR(6) PRIMARY KEY ,
  3. CLI_NOM VARCHAR(30) ,
  4. CLI_APEP VARCHAR(30) ,
  5. CLI_APEM VARCHAR(30) ,
  6. CLI_TELF VARCHAR(30) ,
  7. CLI_EMAIL VARCHAR(30) ,
  8. CLI_DNI VARCHAR(9) ,
  9. CLI_FNAC DATE ,
  10. CLI_SEXO VARCHAR(1),
  11. CLI_DIRE VARCHAR(30) ,
  12. DIST_COD CHAR(6) ,
  13. CLI_ESTADO CHAR(1),
  14. USU_COD CHAR(6)NULL,
  15. AUDT_FECACT DATE NULL ,
  16. AUDT_USER CHAR(6) NULL
  17. --CONSTRAINT FK_CLI_DIST FOREIGN KEY (DIST_COD) REFERENCES DISTRITO(COD_DIST),
  18. --CONSTRAINT FK_CLI_USU FOREIGN KEY (AUDT_USER) REFERENCES USUARIO(COD_USU),
  19. --CONSTRAINT FK_CLI_USU1 FOREIGN KEY (USU_COD) REFERENCES USUARIO(COD_USU)
  20. )
  21.  
  22.  
  23. CREATE TABLE MESA(
  24. COD_MESA CHAR(6)PRIMARY KEY ,
  25. MESA_DESC VARCHAR(30) ,
  26. MESA_SILLAS INT ,
  27. SEDE_COD CHAR(6),
  28. MESA_FILA INT,
  29. MESA_COLUMNA INT,
  30. MESA_ESTADO CHAR(1) ,
  31. MESA_TIPO CHAR(1),
  32. MESA_PRECIO DECIMAL(7,2)
  33. )
  34.  
  35. GO
  36.  
  37. CREATE TABLE RESERVACIONES(
  38. COD_RESE CHAR(6) PRIMARY KEY ,
  39. RESE_FECHA DATE ,
  40. RESE_NPER INT ,
  41. RESE_HORAE TIME ,
  42. RESE_HORAS TIME ,
  43. RESE_ESTADO CHAR(1),
  44. CLI_COD CHAR(6)NULL,
  45. MESA_COD CHAR(6)
  46. CONSTRAINT FK_RESER_CLI FOREIGN KEY (CLI_COD) REFERENCES CLIENTES(COD_CLI),
  47. CONSTRAINT FK_RESER_MESA FOREIGN KEY (MESA_COD) REFERENCES MESA(COD_MESA)
  48. )
  49.  
  50. INSERT INTO CLIENTES(COD_CLI) SELECT 'MiClnt';
  51.  
  52. INSERT INTO  MESA(COD_MESA) SELECT 'MiMesa';
  53.  
  54. INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '1.1','MiClnt','MiMesa','20130101','19:00:00.000','20:00:00.000';
  55. INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '1.2','MiClnt','MiMesa','20130101','20:00:00.000','22:00:00.000';
  56. INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '2.1','MiClnt','MiMesa','20130102','19:00:00.000','20:00:00.000';
  57. INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '2.2','MiClnt','MiMesa','20130102','21:00:00.000','23:59:59.999';
  58. INSERT INTO RESERVACIONES(COD_RESE,CLI_COD,MESA_COD,RESE_FECHA,RESE_HORAE,RESE_HORAS) SELECT '3','MiClnt','MiMesa','20130103','00:00:00.000','03:00:00.000';
  59.  
  60. WITH T AS
  61. (SELECT ROW_NUMBER() OVER(Partition BY RESE_FECHA ORDER BY RESE_HORAE) N,
  62.         *
  63. FROM    RESERVACIONES)
  64. SELECT  IsNull(T1.RESE_FECHA,T2.RESE_FECHA) RESE_FECHA,
  65.         IsNull(T1.RESE_HORAS,'00:00:00.000') RESE_HORAS,
  66.         IsNull(T2.RESE_HORAE,'23:59:59.999') RESE_HORAE
  67. FROM    T T1
  68. FULL JOIN T T2
  69.         ON T1.RESE_FECHA=T2.RESE_FECHA
  70.         AND T1.N=T2.N-1
  71. WHERE   IsNull(T1.RESE_HORAS,'00:00:00.000')<>IsNull(T2.RESE_HORAE,'23:59:59.999');
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog