lunes, 26 de septiembre de 2011

[INF-272] PROYECTO : Triggers

--****************************
--TRIGGERS********************
--****************************

--1.- COMPROBAR LOS DATOS, VERIFICANDO QUE LA MESA EXISTA AL INSERTAR UNA NUEVA
--COMANDA
CREATE TRIGGER T1
ON PEDIDOS
INSTEAD OF INSERT
AS
BEGIN
    PRINT @@ROWCOUNT
    IF (EXISTS(SELECT * FROM INSERTED I, MESAS M
                WHERE M.ID_MESA=I.ID_MESA))
    BEGIN
        PRINT 'Adicionando'
        INSERT INTO PEDIDOS (ID_COMANDA,OBJ_VERSION,ESTADO_BD,
        NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO)
        SELECT ID_COMANDA,OBJ_VERSION,ESTADO_BD,
        NRO_PEDIDO,ESTADO,ID_MESA,ID_MESERO FROM INSERTED
    END   
    ELSE
    BEGIN
        PRINT 'NO EXITE MESA'
        ROLLBACK TRAN
    END   
END

--2.-COMPROBAR LOS DATOS, VERIFICANDO QUE EL CLIENTE ESTE REGISTRADO
--ANTES DE INSERTARLO EN EL CONTRATO 
CREATE TRIGGER T2
ON CONTRATOS
INSTEAD OF INSERT
AS
BEGIN
    PRINT @@ROWCOUNT
    IF(EXISTS (SELECT * FROM CLIENTES C, INSERTED I
                WHERE C.ID_CLIENTE = I.ID_CLIENTE))
    BEGIN
        PRINT 'ADICIONANDO'
        INSERT INTO CONTRATOS ( ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
        NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
        HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
        ID_TARIFA, ID_ORDEN) SELECT ID_CONTRATO,OBJ_VERSION,ESTADO_BD,
        NRO_CONTRATO, FECHA_PAGO, NRO_PERSONAS, FECHA_EVENTO,
        HORA_EVENTO,LUGAR,TIPO_SERVICIO, MONTO_TOTAL,ID_CLIENTE,
        ID_TARIFA, ID_ORDEN FROM INSERTED
    END
    ELSE
    BEGIN
        PRINT 'NO EXISTE CLIENTE!!'
        PRINT 'REGISTRE AL NUEVO CLIENTE ANTES DE PROCEDER'
        ROLLBACK TRAN
    END
END

[INF-272] PROYECTO : Indices y Sinonimos

--****************************
--INDICES*Y*SINONIMOS*********
--****************************

--1.- CREAR UN INDICE PARA LOS CLIENTES SEGUN SU NIT
CREATE INDEX IN_CLIENTE
ON CLIENTES (NIT)

--2.- CREAR UN INDICE PARA LAS MESAS SEGUN LA SALA Y EL ESTADO
CREATE INDEX IN_MESAS
ON MESAS (ESTADO,ID_SALA)

--3.- CREAR UN SINONIMO PARA LOS PRODUCTOS
CREATE SYNONYM ALIMENTO FOR PRODUCTOS
SELECT * FROM ALIMENTO

--4.- CREAR UN SINONIMO PARA VENTAS
CREATE SYNONYM FACTURA FOR VENTAS
SELECT * FROM FACTURA

[INF-272] PROYECTO : Reglas y checks

--****************************
--REGLAS Y CHECKS*************
--****************************

--1.- CREAR UN CHECK PARA LIMITAR CONTROLAR LOS ESTADOS QUE
--PUEDE TENER UNA MESA

--SOL CON CHECKS
CREATE TABLE MESAS(
    id_mesa int not null,
    obj_version int,
    estado_bd bit,
    nro_mesa int,
    ubiacion_x int,
    ubiacion_y int,
    estado varchar(255),
    id_sala int,
    CHECK (ESTADO='NO DISPONIBLE' OR ESTADO='DISPONIBLE')
)

--SOL CON REGLAS
CREATE RULE REGLA1
AS
    @ESTADO = 'NO DIPONIBLE' OR @ESTADO ='DISPONIBLE'
SP_BINDRULE REGLA1,'MESAS.ESTADO'

--2.- CREAR UNA REGLAS PARA CONTROLAR QUE LA FECHA DE PAGO
-- DE LOS CONTRATOS SEA ANTERIOR A LA FECHA ACTUAL

--SOL CON CHECKS
CREATE TABLE CONTRATOS2(   
    id_contrato int not null,
    obj_version int,
    estado_bd bit,
    nro_contrato int,
    fecha_pago datetime,
    nro_personas int,
    fecha_evento datetime,
    hora_evento datetime,
    lugar varchar (255),
    tipo_servicio varchar (255),
    monto_total numeric (19,2),
    id_cliente int,
    id_tarifa int,
    id_orden int,
    CHECK (FECHA_PAGO > GETDATE())
)

--SOL CON REGLAS
CREATE RULE REGLA2
AS
    @FECHA_PAGO > GETDATE()
SP_BINDRULE REGLA2,'CONTRATOS.FECHA_PAGO'

[INF-272] PROYECTO : Cursores

--****************************
--CURSORES********************
--****************************

--1.- MEDIANTE CURSORES DETERMINAR LA COMANDA QUE TIENE MAS PRODUCTOS
ALTER PROCEDURE SPC1
AS
BEGIN
    DECLARE @CONT_MAX INTEGER
    DECLARE @RES INTEGER
    DECLARE @IDC INTEGER
    DECLARE @CONT INTEGER
    SET @CONT_MAX=-1
    DECLARE CUR1 CURSOR
    FOR
        SELECT ID_COMANDA, COUNT(ID_COMANDA) AS CANTIDAD
        FROM LINEA_PEDIDO
        GROUP BY ID_COMANDA
   
    OPEN CUR1
    FETCH CUR1 INTO @IDC,@CONT
    WHILE(@@FETCH_STATUS =0)
    BEGIN
        IF (@CONT>@CONT_MAX)
        BEGIN
            SET @CONT_MAX=@CONT   
            SET @RES= @IDC
        END
        FETCH CUR1 INTO @IDC, @CONT
    END
    IF @RES!= NULL BEGIN
    PRINT 'LA COMANDA COM MAS  PRODUCTOS ES : '
    PRINT CAST (@RES AS VARCHAR)
    END
    ELSE
    BEGIN
        PRINT 'NO EXISTEN COMANDAS'
    END
    CLOSE CUR1
    DEALLOCATE  CUR1
END
EXEC SPC1

--2.- MEDIANTE CURSORES DETERMINAR EN CUANTOS CONTRATOS PARTICIPO EL CLIENTE
--DE NOMBRE X
ALTER PROCEDURE SPC2 @XNOMBRE AS VARCHAR(255)
AS
BEGIN
    DECLARE @IDCLIENTE INTEGER
    DECLARE @ID_AUX INTEGER
    DECLARE @CONT INTEGER
    SET @CONT=0
    SET @IDCLIENTE =DBO.OBT_ID(@XNOMBRE)
    DECLARE CUR2 CURSOR
    FOR
        SELECT ID_CLIENTE FROM CONTRATOS
    OPEN CUR2
    FETCH CUR2 INTO @ID_AUX
    WHILE (@@FETCH_STATUS =0)
    BEGIN
        IF (@ID_AUX=@IDCLIENTE)
            SET @CONT=@CONT+1
        FETCH CUR2 INTO @ID_AUX
    END     
    PRINT 'CONTRATOS REALIZADOS: '+CAST (@CONT AS VARCHAR)   
    CLOSE CUR2
    DEALLOCATE CUR2
END
EXEC SPC2 'JUAN pEREZ'
CREATE FUNCTION OBT_ID (@NOMBRE VARCHAR(255))
RETURNS INTEGER
BEGIN
    DECLARE @ID INTEGER
    SET  @ID= (SELECT ID_CLIENTE FROM CLIENTES
                WHERE NOMBRE = @NOMBRE)
    RETURN @ID
END


[INF-272] PROYECTO : Transacciones

--****************************
--TRANSACCIONES***************
--****************************
--1.- MEDIANTE TRANSACCCIONES CAMBIAR EL NOMBRE  Y PRECIO DE COMPRA
--DEL PRODUCTO DE NOMBRE X
ALTER PROCEDURE SP1 @NOMBRE VARCHAR(255),
    @NUEVO_NOMBRE VARCHAR(255), @PRECIO_COMPRA NUMERIC(19,2)
AS
BEGIN
    BEGIN TRAN
    BEGIN TRY
        UPDATE PRODUCTOS SET NOMBRE=@NUEVO_NOMBRE,
                            PRECIO_COMPRA=@PRECIO_COMPRA
        WHERE NOMBRE=@NOMBRE 
        COMMIT TRAN
        PRINT 'SE REALIZO CON EXITO LA TRANSACCION'
    END TRY
    BEGIN CATCH
        PRINT 'HA OCURRIDO UN ERROR!!'
        ROLLBACK TRAN
    END CATCH
END
EXEC SP1 'GASEOSA', 'REFRESCO', 12.5

--2.- MEDIANTE TRANSACCIONES ACTULIZAR EL ESTADO DE LA MESA X AS UN ESTADO Y
ALTER PROCEDURE SP2 (@XMESA INTEGER, @YESTADO VARCHAR (255))
AS
BEGIN
    DECLARE @ERROR INTEGER
    BEGIN TRAN
    UPDATE MESAS SET ESTADO=@YESTADO
                WHERE ID_MESA=@XMESA
    SET @ERROR=@@ERROR
    IF (@ERROR=0)
    BEGIN
        COMMIT TRAN
        PRINT 'EXITO EN LA TRANSACCION'
    END
    ELSE
    BEGIN
        ROLLBACK TRAN
        PRINT 'HA OCURRIDO UN ERROR!!!'
    END
END
EXEC SP2 1,'DISPONIBLE'
SELECT * FROM MESAS


[INF-272] PROYECTO : Vistas

--****************************
--VISTAS**********************
--****************************

--1.- GENERAR UNA VISTA PARA MOSTRAR LAS VAJILLA Y LOS MANTELES
--ENVIADOS EN LA ORDEN 1   
ALTER VIEW VISTA1
AS
    SELECT V.NOMBRE,V.TIPO, 'VAJILLA' AS TIPO_S
    FROM ORDENES_DESPACHO OD, LINEA_DESPACHO_VAJILLA LDV,
        VAJILLA V
    WHERE OD.ID_ORDEN=LDV.ID_ORDEN AND OD.ID_ORDEN=1
            AND LDV.ID_VAJILLA= V.ID_VAJILLA
    UNION
    SELECT M.NOMBRE,M.TIPO, 'MATEL' AS TIPO_S
    FROM ORDENES_DESPACHO OD, LINEA_DESPACHO_MANTELES LDM,
        MANTELES M
    WHERE OD.ID_ORDEN=LDM.ID_ORDEN AND OD.ID_ORDEN=1
            AND LDM.ID_MANTEL=M.ID_MANTEL
SELECT * FROM VISTA1

--2.- GENERAR UNA VISTA PARA MOSTRAR A LA CANTIDAD DE CLIENTES SEGUN SU RAZON SOCIAL
CREATE VIEW VISTA2
AS
    SELECT C.RAZON_SOCIAL, COUNT(C.ID_CLIENTE) AS CANTIDAD
    FROM CLIENTES C
    GROUP BY C.RAZON_SOCIAL

SELECT * FROM VISTA2

[INF-272] PROYECTO : Funciones

--****************************
--FUNCIONES*******************
--****************************
--1.- MOSTRAR EL NOMBRE Y EDAD EXACTA DE LOS MESEROS QUE ATENDIERON A MAS PERSONAS EN LA SALA X
ALTER FUNCTION FUNC1(@XSALA INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
 DECLARE @MESERO VARCHAR (255),@ID_M INTEGER
 IF EXISTS(SELECT * FROM SALAS WHERE ID_SALA=@XSALA) BEGIN
 SET @ID_M =  (SELECT TOP 1 P.ID_MESERO
     FROM PEDIDOS P, MESAS M, SALAS S 
     WHERE P.ID_MESA=M.ID_MESA AND M.ID_SALA=S.ID_SALA 
     AND S.ID_SALA=@XSALA 
     GROUP BY P.ID_MESERO
     ORDER BY COUNT(P.ID_COMANDA) DESC)
 SET @MESERO =(SELECT NOMBRE FROM MESEROS 
     WHERE ID_MESERO=@ID_M)
 END
 ELSE
 BEGIN
  SET @MESERO='NO EXISTE SALA!'
 END
 RETURN @MESERO    
END
PRINT CAST(DBO.FUNC1(2) AS VARCHAR)

--2.- DETERMINAR EL TIEMPO EXACTO DEL CONTRATO MAS ANTIGUO 
ALTER FUNCTION FUNC2 ()
RETURNS VARCHAR(25)
AS
BEGIN
 DECLARE @RESP VARCHAR(25), @FECH DATETIME
 SET @FECH= (SELECT MIN(FECHA_PAGO) FROM CONTRATOS)  
 SET @RESP = DBO.CAL_EDADD(@FECH)
 RETURN @RESP
END
PRINT DBO.FUNC2()
CREATE FUNCTION CAL_EDADD(@FECHA_NAC DATETIME)
RETURNS VARCHAR(25)
AS
BEGIN
 DECLARE @AUX_FECHA DATETIME
 DECLARE @DIA INTEGER, @MES INTEGER, @ANIO INTEGER
 DECLARE @EDAD VARCHAR(25)
 SET @AUX_FECHA = @FECHA_NAC 
 SET @ANIO = DATEDIFF(yy, @AUX_FECHA, GETDATE()) - CASE WHEN MONTH(@FECHA_NAC) > MONTH(GETDATE()) THEN 1 ELSE 0 END 
 SET @AUX_FECHA = DATEADD(yy, @ANIO, @AUX_FECHA) 
 SET @MES = DATEDIFF(m, @AUX_FECHA, GETDATE()) - CASE WHEN DAY(@FECHA_NAC) > DAY(GETDATE()) THEN 1 ELSE 0 END 
 SET @AUX_FECHA = DATEADD(m, @MES, @AUX_FECHA) 
 SET @DIA = DATEDIFF(d, @AUX_FECHA, GETDATE()) 
 SET @EDAD='AÑOS:'+ CAST(@ANIO AS VARCHAR)+' MESES:'+ CAST(@MES AS VARCHAR)+ ' DIAS:'+ CAST(@DIA AS VARCHAR)
 RETURN (@EDAD)
END

[INF-272] PROYECTO : Procedimientos Almacenados

--****************************
--PROCEDIMIENTOS**************
--****************************
--1.- DESCONTAR UN PORCENTAJE D DEL CLIENTE C QUE PARTICIPO EN MAS VENTAS
ALTER PROCEDURE PROC1 @C VARCHAR(255), @D INTEGER
AS
BEGIN
   IF (EXISTS(SELECT * FROM CLIENTES WHERE NOMBRE= @C  ) )
   BEGIN
       UPDATE VENTAS SET IMPORTE=IMPORTE - IMPORTE*(@D/100)
       WHERE ID_VENTA IN (SELECT V1.ID_VENTA
                           FROM VENTAS V1, CLIENTES C
                           WHERE V1.ID_CLIENTE=C.ID_CLIENTE
                               AND V1.IMPORTE IN (SELECT MAX(V.IMPORTE)
                                                 FROM VENTAS V, CLIENTES C
                                                 WHERE V.ID_CLIENTE =C.ID_CLIENTE
                                                   AND @C=C.NOMBRE))                      
       PRINT 'DATOS ACTULIZADOS'
   END
   ELSE
   BEGIN
       PRINT 'NO EXISTE CLIENTE'
   END
END
EXEC PROC1 'JUAN FLORES',5

--2.- ELIMINAR LOS CONTRATO REALIZADOS POR EL CLIENTE DE NOMBRE N
--CONJUNTAMENTE CON LA COTIZACION REALIZADA Y LA FACTURA
CREATE PROCEDURE PROC2 (@N VARCHAR(255))
AS
BEGIN
   DECLARE @ID_C INTEGER
   SET @ID_C=(SELECT ID_CLIENTE FROM CLIENTES WHERE @N=NOMBRE)
   IF (@ID_C!=NULL)
   BEGIN
       DELETE VENTA WHERE @ID_C=ID_CLIENTE
       DELETE LINEA_COTIZACION WHERE ID_CONTRATO IN
               (SELECT ID_CONTRATO FROM CONTRATO
                WHERE ID_CLIENTE=@ID_C)    
       DELETE CONTRATO WHERE ID_CONTRATO=@ID_C
   END
   ELSE
   BEGIN
       PRINT 'NO EXISTE CLIENTE EN LOS REGISTROS'
   END
END
EXEC PROC2 'JUAN PEREZ'

lunes, 12 de septiembre de 2011

[INF-272] PROYECTO : Funciones FECHA - CADENAS - MATEMÁTICAS

--******************************************
--FUNCIONES DE FECHA Y HORA*****************
--******************************************

--1.- DETERMINAR EL NUMERO DE DIA (1-365) EN EL QUE ESTAMOS HOY
CREATE FUNCTION NRO_DIA()
RETURNS INTEGER
AS BEGIN
    DECLARE @DIAS INTEGER
    SET @DIAS=DATEDIFF(d,'1/1/2011',GETDATE())
    RETURN(@DIAS)
END
PRINT 'nRO DE DIA: '+ CAST (DBO.NRO_DIA() AS VARCHAR)

--2.- CONTAR LA CANTIDAD DE DIAS QUE SEPARA UNA FECHA X DE OTRA FECHA Y
CREATE FUNCTION NRO_DIAS_FECHAS(@X DATETIME, @Y DATETIME)
RETURNS INTEGER
AS BEGIN
    DECLARE @DIAS INTEGER
    SET @DIAS=DATEDIFF(d,@X,@Y)
    RETURN(@DIAS)
END
PRINT 'nRO DE DIAS: ' + CAST (DBO.NRO_DIAS_FECHAS('07-26/1997',getdate()) AS VARCHAR)

--3.- AGREGAR 'X' DIAS 'Y' MESES Y 'Z' AÑOS A LA FWECHA ACTUAL
CREATE FUNCTION ADICIONA_FECHA(@XD INTEGER, @YM INTEGER, @ZA INTEGER)
RETURNS DATETIME
AS
BEGIN
    DECLARE @FECHA_ACTUAL DATETIME
    SET @FECHA_ACTUAL=GETDATE()
    SET @FECHA_ACTUAL=DATEADD(YEAR,@ZA,@FECHA_ACTUAL)
    SET @FECHA_ACTUAL=DATEADD(MONTH,@YM,@FECHA_ACTUAL)
    SET @FECHA_ACTUAL=DATEADD(DAY,@XD,@FECHA_ACTUAL)
    RETURN @FECHA_ACTUAL
END
PRINT DBO.ADICIONA_FECHA(1,2,3)

--4.- MOSTRAR UN MANSAJE SI NOS ENCONTAMOS EN UN DIA PAR O IMPAR
CREATE FUNCTION VERIFICA_FECHA()
RETURNS VARCHAR(25)
AS
BEGIN
    DECLARE @DIA INTEGER
    DECLARE @RES VARCHAR(25)
    SET @DIA=DAY(GETDATE())
    IF (@DIA %2=0)
        SET @RES='Dia PAR'
    ELSE
        SET @RES='Dia IMPAR'
    RETURN @RES
END
PRINT DBO.VERIFICA_FECHA()

--5.- CALCULAR LA EDAD INTRUDCIENDO LA FECHA DE NACIMIENTO
CREATE FUNCTION CAL_EDADD(@FECHA_NAC DATETIME)
RETURNS VARCHAR(25)
AS
BEGIN
    DECLARE @AUX_FECHA DATETIME
    DECLARE @DIA INTEGER, @MES INTEGER, @ANIO INTEGER
    DECLARE @EDAD VARCHAR(25)
    SET @AUX_FECHA = @FECHA_NAC
    SET @ANIO = DATEDIFF(yy, @AUX_FECHA, GETDATE()) - CASE WHEN MONTH(@FECHA_NAC) > MONTH(GETDATE()) THEN 1 ELSE 0 END
    SET @AUX_FECHA = DATEADD(yy, @ANIO, @AUX_FECHA)
    SET @MES = DATEDIFF(m, @AUX_FECHA, GETDATE()) - CASE WHEN DAY(@FECHA_NAC) > DAY(GETDATE()) THEN 1 ELSE 0 END
    SET @AUX_FECHA = DATEADD(m, @MES, @AUX_FECHA)
    SET @DIA = DATEDIFF(d, @AUX_FECHA, GETDATE())
    SET @EDAD='AÑOS:'+ CAST(@ANIO AS VARCHAR)+' MESES:'+ CAST(@MES AS VARCHAR)+ ' DIAS:'+ CAST(@DIA AS VARCHAR)
    RETURN (@EDAD)
END
PRINT DBO.CAL_EDADD('6/07/1997')

--******************************************
--FUNCIONES MATEMATICAS*********************
--******************************************
--1.- GENERAR FIBONACCI

CREATE PROCEDURE FIBO(@N INTEGER)
AS
BEGIN   
    DECLARE @F INTEGER, @A INTEGER, @B INTEGER,  @C INTEGER
    SET @A=-1
    SET @B=1
    SET @C=1
    WHILE  (@C<=@N)
    BEGIN
        SET @F=@A+@B
        PRINT @F
        SET @A=@B
        SET @B=@F
        SET @C=@C+1
    END
END
EXEC FIBO 15

--2.- DETERMINAR LA SUPERFICIE Y EL VOLUMEN DE UN CUBO
ALTER PROCEDURE CUBO (@A NUMERIC(10,2))
AS
BEGIN
    DECLARE @SUPERFICIE NUMERIC(10,2),@VOLUMEN NUMERIC(10,2) 
    SET @SUPERFICIE= 6* POWER(@A,2)     
    SET @VOLUMEN= POWER(@A,3)     
    PRINT 'Superficie: '+ CAST (@SUPERFICIE AS VARCHAR(20))
    PRINT 'Volumen: ' + CAST (@VOLUMEN AS VARCHAR (20))
END
EXEC CUBO 4.00

--3.- INVERTIR UN NUMERO
ALTER FUNCTION INVERTIR(@n INTEGER)
RETURNS INTEGER
BEGIN
    DECLARE @d integer
    DECLARE @co integer
    DECLARE @nu integer
    SET @co=@n
    set @nu=0
    WHILE(@co<>0)
    BEGIN
        SET @d=@co%10
        SET @nu=@nu*10+@d
        SET @co=@co/10
    END
    RETURN @nu
END
print dbo.invertir(12345)

--4.- CONTAR EL NUMERO DE DIGITOS DE UN NUMERO
ALTER FUNCTION NRODIGITOS(@N INTEGER)
RETURNS INTEGER
AS
BEGIN
    DECLARE @NDIG INTEGER
    SET @NDIG= LOG(@N)/LOG(10) +1
    RETURN @NDIG
END
PRINT DBO.NRODIGITOS(426114)

--5.- VERIFICAR SI UN NUMERO ES PRIMO
CREATE FUNCTION VERIPRIMO(@n integer)
RETURNS INTEGER
BEGIN
    DECLARE @i integer
    DECLARE @sw integer
    DECLARE @c integer
    SET @i=2
    SET @sw=0
    SET @c=0
    WHILE(@i<=@n)
    BEGIN
        IF(@n%@i=0)
        BEGIN
            SET @c=@c+1   
        END
        SET @i=@i+1
    END
    RETURN @c
END

if(dbo.VERIPRIMO(43)=1)
begin
    print('Si es Primo')
end
else
begin
    print('No es primo')
end

--******************************************
--FUNCIONES DE CADENA **********************
--******************************************

--1.-  CONVERTIR EL PRIMER CARACTER MAYUSCULA Y EL RESTO A MINUSCULA
ALTER FUNCTION TIPOTITULO (@A VARCHAR (255))
RETURNS VARCHAR(255)
AS
BEGIN
    DECLARE @PAL VARCHAR(255)
    SET @PAL =UPPER(LEFT(@A,1))+ LOWER(SUBSTRING(@A,2,LEN(@A)))
    RETURN @PAL
END
PRINT DBO.TIPOTITULO('HOLA mUNdo')

--2.- MOSTRAR EL EQUIVALENTE EN ASCCI DE CADA CARACTER DE UN PALABRA
ALTER PROCEDURE PAL_ASCII (@X VARCHAR(255))
AS
BEGIN
    DECLARE @I INTEGER
    SET @I=1
    WHILE(@I<=LEN(@X))
    BEGIN
        PRINT SUBSTRING(@X,@I,1)+'->'+CAST (ASCII(SUBSTRING(@X,@I,1)) AS VARCHAR)
        SET @I=@I+1   
    END
END
EXEC PAL_ASCII 'gONZALO OsCo'

--3.- ELIMNAR LOS ESPACIOS EN BLANCO DE UNA CADENA
CREATE FUNCTION ELI_ESPACIO(@X VARCHAR(255))
RETURNS VARCHAR(255)
AS
BEGIN
    RETURN RTRIM(LTRIM(@X))
END
PRINT DBO.ELI_ESPACIO(' hOLA mUNDO ')

--4.- REMPLAZAR LOS ESPACIOS EN BLANCO POR '_'
CREATE FUNCTION REM_ESPACIO(@X VARCHAR(255))
RETURNS VARCHAR(255)
AS
BEGIN
    SET @X =REPLACE(@X,' ','_')
    RETURN (@X)
END 
PRINT DBO.REM_ESPACIO(' goNZALO oSOC hERNADEZ')

--5.- CONVERTIR A MINUSCULA O MAYUSCULA UNA PALABRA
ALTER FUNCTION CON_CADENA (@X VARCHAR (255),@SW INTEGER)
RETURNS VARCHAR(255)
AS
BEGIN
    IF (@SW=1)
        SET @X=UPPER(@X)
    ELSE
        SET @X=LOWER(@X)
    RETURN @X   
END
PRINT DBO.CON_CADENA('GonZAlo',2)


lunes, 5 de septiembre de 2011

[INF-272] PROYECTO: 25 CONSULTAS

--*****************************************************************************************-
--*REALIZAR 25 CONSULTAS CON FUNCIONES AGREGADAS, SUBCONSULTAS Y FUNCIONES DE AGRUPAMIENTO*-
--****************************************************************************************-

--1.- ORDENAR, CONTAR Y  MOSTRAR LAS SALAS SEGUN LA CANTIDAD DE MESAS DISPONIBLES
SELECT M.ID_SALA, S.NOMBRE, COUNT(M.ID_SALA)
FROM MESAS M, SALAS S
WHERE M.ESTADO='DISPONIBLE' AND M.ID_SALA=S.ID_SALA
GROUP BY M.ID_SALA, S.NOMBRE
ORDER BY COUNT (M.ID_SALA) DESC


--2.- MOSTRAR  LOS PRODUCTOS QUE SOLICITO EL CLIENTE 'GONZALO PEREZ LOPEZ' EN EL CONTRATO 1
SELECT  P.NOMBRE, LC.CANTIDAD
FROM CLIENTES C,CONTRATOS CO, LINEA_COTIZACION LC, PRODUCTOS P
WHERE CO.ID_CONTRATO=1 AND CO.ID_CLIENTE =(SELECT ID_CLIENTE FROM CLIENTES WHERE NOMBRE='GONZALO PEREZ LOPEZ')
AND LC.ID_CONTRATO=CO.ID_CONTRATO AND P.ID_PRODUCTO=LC.ID_PRODUCTO


--3.- MOSTRAR LOS 3 CLIENTES (EMPRESA) QUE HICIERON MAYOR CANTIDAD QUE CONTRATOS
SELECT TOP 3 CO.ID_CLIENTE,C.NOMBRE ,COUNT(*) AS nroCONTRATOS
FROM CONTRATOS CO, CLIENTES C
WHERE C.RAZON_SOCIAL IS NOT NULL AND CO.ID_CLIENTE = C.ID_CLIENTE
GROUP BY CO.ID_CLIENTE,C.NOMBRE
ORDER BY COUNT (*) DESC

--4.- CONTAR LA CANTIDAD DE EMPLEADOSE SEGUN EL TIPO QUE CARGO QUE TIENE SIN CONTAR AL GERENTE Y QUE TENGAN UN SUELDO MAYOR A 4000
SELECT  E.CARGO, COUNT(E.CARGO)
FROM EMPLEADOS E
WHERE E.CARGO <> 'GERENTE' AND E.LIQUIDO_PAGABLE >4000
GROUP BY E.CARGO

--5.- CONTAR LA CANTIDAD DE PRODUCTOS QUE TIENE CADA ALMACEN
SELECT A.NOMBRE, COUNT(P.ID_ALMACEN) AS NroPRODUCTOS
FROM ALMACENES A, PRODUCTOS P
WHERE A.ID_ALMACEN = P.ID_ALMACEN
GROUP BY A.NOMBRE,P.ID_ALMACEN


--6.- DETERMINAR LA/LAS COMANDA(PEDIDO) CON LA CANTIDAD DE PRODUCTOS
SELECT LP.ID_COMANDA,COUNT(LP.ID_COMANDA) AS CANTIDAD_PRODUCTOS
FROM PEDIDOS PE , PRODUCTOS P, LINEA_PEDIDO LP
WHERE PE.ID_COMANDA=LP.ID_COMANDA AND LP.ID_PRODUCTO=P.ID_PRODUCTO
GROUP BY LP.ID_COMANDA


--7.- VER LOS PRODUCTOS QUE TRAPASO EL ALMACEN 'LA PAZ AL ALMACEN ORURO'
SELECT DISTINCT P.NOMBRE
FROM TRASPASOS T, PRODUCTOS P
WHERE T.ID_PRODUCTO=P.ID_PRODUCTO AND
T.ID_ALMACEN =(SELECT ID_ALMACEN FROM ALMACENES WHERE NOMBRE='LA PAZ') AND
T.ID_ALMACEN_DESTINO =(SELECT ID_ALMACEN FROM ALMACENES WHERE NOMBRE='ORURO')


--8.- MOSTRAR LOS CLIENTES (PERSONA) QUE HICIERON MAYOR CANTIDAD QUE CONTRATOS
SELECT TOP 3 CO.ID_CLIENTE,C.NOMBRE ,COUNT(*) AS nroCONTRATOS
FROM CONTRATOS CO, CLIENTES C
WHERE C.RAZON_SOCIAL IS NULL AND CO.ID_CLIENTE = C.ID_CLIENTE
GROUP BY CO.ID_CLIENTE,C.NOMBRE
ORDER BY COUNT (*) DESC


--9.- DETERMINAR EL MESERO QUE ATENDIÓ MAYOR NUMERO DE PEDIDOS
SELECT TOP 1 M.NOMBRE,PE.ID_MESERO,COUNT (PE.ID_MESERO) AS nROCOMANDAS
FROM PEDIDOS PE, MESEROS M
WHERE M.ID_MESERO=PE.ID_MESERO
GROUP BY M.NOMBRE,PE.ID_MESERO
ORDER BY (COUNT(*)) DESC


--10.- MOSTRAR LOS PROVEDORES QUE PROPORCIONAN EL PRODUCTO 'ARROZ'
SELECT PR.NOMBRE, PR.NIT
FROM PROVEDORES PR, SUMINISTROS S, PRODUCTOS P
WHERE PR.ID_PROVEEDOR = S.ID_PROVEEDOR AND P.ID_COMPROBANTE=S.ID_COMPROBANTE


--11.- MOSTRAR LAS SALAS QUE TIENEN TODAS LAS MESAS OCUPADAS
SELECT S.NOMBRE
FROM SALAS S
WHERE S.ID_SALA IN (SELECT M.ID_SALA
           FROM SALAS S, MESAS M
           WHERE S.ID_SALA=M.ID_SALA AND M.ESTADO='NO DISPONIBLE'
           GROUP BY (M.ID_SALA)
           HAVING COUNT(*) =6
           )


--12.- MOSTRAR DE QUE ESTA COMPUESTO EL PRODUCTO 'HAMBURGUESA'
SELECT NOMBRE
FROM PRODUCTOS
WHERE ID_PRODUCTO IN (SELECT C.ID_INSUMO
           FROM PRODUCTOS P, COMPOSICIONES C
           WHERE P.ID_PRODUCTO=C.ID_PRODUCTO AND P.NOMBRE='HAMBURGUESA')


--13.- MOSTRAR LA CETEGORIA QUE PERTENECE EL PRODUCTO 'TOMATE'
SELECT C.NOMBRE
FROM CATEGORIAS C, PRODUCTOS P, CATEGORIA_ITEM_PRODUCTO CIP
WHERE P.ID_PRODUCTO=CIP.ID_PRODUCTO AND CIP.ID_CATEGORIA=C.ID_CATEGORIA


--14.- MOSTRAR LOS CONTRATOS QUE SE HICIERON CON LA TARIFA 'NORMAL'
SELECT C.NRO_CONTRATO
FROM CONTRATOS C, TARIFA T
WHERE T.NOMBRE='NORMAL' AND C.ID_TARIFA=T.ID_TARIFA


--15.- MOSTRAR LOS DATOS DEL CLIENTE QUE HIZO EL CONTRATO MAS CARO
SELECT C.NOMBRE, C.NIT, C.RAZON_SOCIAL
FROM CLIENTES C, CONTRATOS CO
WHERE C.ID_CLIENTE=CO.ID_CLIENTE AND CO.MONTO_TOTAL IN(
               SELECT MAX(CO.MONTO_TOTAL)
               FROM CONTRATOS CO
               )


--16.- MOSTRAR LAS ORDENES DE DESPACHO QUE TRANSPORTARON VAJILLA 'BLANCA' O MANTELES 'AMARILLOS'
SELECT O.ID_ORDEN, O.FECHA
FROM ORDENES_DESPACHO O, LINEA_DESPACHO_VAJILLA LDV, VAJILLA V
WHERE O.ID_ORDEN=LDV.ID_ORDEN AND LDV.ID_VAJILLA=V.ID_VAJILLA AND  V.COLOR='BLANCO'
UNION
SELECT O.ID_ORDEN, O.FECHA
FROM ORDENES_DESPACHO O, LINEA_DESPACHO_MANTELES LDM, MANTELES M
WHERE O.ID_ORDEN=LDM.ID_ORDEN AND LDM.ID_MANTEL=M.ID_MANTEL AND  M.COLOR='BLANCO'


--17.- DETERMINAR EL PRODUCTO CON MAYOR NUMERO DE UNIDADES SEGUN EL ALMACEN
SELECT A.NOMBRE,P.NOMBRE, MAX(AP.CANTIDAD_ALMACEN) AS CANTIDAD
FROM ALMACENES A, ALMACEN_PRODUCTO AP, PRODUCTOS P
WHERE A.ID_ALMACEN=AP.ID_ALMACEN AND P.ID_PRODUCTO=AP.ID_PRODUCTO
GROUP BY A.NOMBRE,P.NOMBRE,AP.ID_PRODUCTO


--18.- MOSTRAR LAS VENTAS QUE SE HICIERON A CLIENTES EMPRESAS Y EL MONTO TOTAL QUE PAGARON
SELECT V.NRO_FACTURA, C.NOMBRE, CO.MONTO_TOTAL
FROM CLIENTES C, CONTRATOS CO, VENTAS V
WHERE C.RAZON_SOCIAL IS NOT NULL AND C.ID_CLIENTE=V.ID_CLIENTE AND V.ID_CONTRATO=CO.ID_CONTRATO

--19.- MOSTRAR EL NOMBRE DE LOS MESEROS QUE ATIENDEN EN LA SALA DENOMINADA 'COCHABAMBA'
SELECT DISTINCT M.ID_MESERO,M.NOMBRE, M.APATERNO
FROM MESEROS M, PEDIDOS P, MESAS ME, SALAS S
WHERE M.ID_MESERO=P.ID_MESERO AND P.ID_MESA=ME.ID_MESA AND ME.ID_SALA=S.ID_SALA AND S.NOMBRE='COCHABAMBA'  


--20.- MOSTRAR LA VAJILLA UTILIZADA EN EL CONTRATO DE CODIGO '2'
SELECT V.NOMBRE, V.TIPO, V.COLOR
FROM VAJILLA V, LINEA_DESPACHO_VAJILLA LDV, ORDENES_DESPACHO OD, CONTRATOS C
WHERE  C.ID_CONTRATO=2 AND C.ID_ORDEN=OD.ID_ORDEN AND OD.ID_ORDEN=LDV.ID_ORDEN AND LDV.ID_VAJILLA=V.ID_VAJILLA

--21.- MOSTRAR LOS MANTELES UTILIZADOS EN LOS CONTRATOS QUE SE REALIZARON EN 'LA PAZ'
SELECT DISTINCT M.ID_MANTEL,M.NOMBRE, M.TIPO, M.COLOR
FROM MANTELES M, LINEA_DESPACHO_MANTELES LDM, ORDENES_DESPACHO OD, CONTRATOS C
WHERE  C.LUGAR='LA PAZ' AND C.ID_ORDEN=OD.ID_ORDEN AND OD.ID_ORDEN=LDM.ID_ORDEN AND LDM.ID_MANTEL=M.ID_MANTEL


--22.- DETERMINAR EL PRODUCTO MAS CARO DEL ALMACEN LA PAZ Y MOSTRAR LA CANTIDAD EXISTENTE
SELECT P.NOMBRE,P.CANTIDAD,P.PRECIO_COMPRA
FROM PRODUCTOS P, ALMACENES A
WHERE P.NOMBRE='LA PAZ' AND P.ID_ALMACEN=A.ID_ALMACEN AND P.PRECIO_COMPRA=
(SELECT MAX (P.PRECIO_COMPRA)
FROM ALMACENES A,PRODUCTOS P
WHERE P.NOMBRE='LA PAZ' AND P.ID_ALMACEN=A.ID_ALMACEN)


--23.- MOSTRAR LOS DATOS DEL CLIENTE QUE HIZO EL CONTRATO MAS BARATO
SELECT C.NOMBRE, C.NIT, C.RAZON_SOCIAL
FROM CLIENTES C, CONTRATOS CO
WHERE C.ID_CLIENTE=CO.ID_CLIENTE AND CO.MONTO_TOTAL IN(
               SELECT MIN(CO.MONTO_TOTAL)
               FROM CONTRATOS CO
               )


--24.- MOSTRAR LAS SALAS QUE TIENEN TODAS LAS MESAS DESOCUPADAS
SELECT S.NOMBRE
FROM SALAS S
WHERE S.ID_SALA IN (SELECT M.ID_SALA
           FROM SALAS S, MESAS M
           WHERE S.ID_SALA=M.ID_SALA AND M.ESTADO='NO DISPONIBLE'
           GROUP BY (M.ID_SALA)
           HAVING COUNT(*) =0
           )


--25.- DETERMINAR EL PRODUCTO CON MENOR NUMERO DE UNIDADES SEGUN EL ALMACEN
SELECT A.NOMBRE,P.NOMBRE, MIN(AP.CANTIDAD_ALMACEN) AS CANTIDAD
FROM ALMACENES A, ALMACEN_PRODUCTO AP, PRODUCTOS P
WHERE A.ID_ALMACEN=AP.ID_ALMACEN AND P.ID_PRODUCTO=AP.ID_PRODUCTO
GROUP BY A.NOMBRE,P.NOMBRE,AP.ID_PRODUCTO

[INF-272] PROYECTO: DB_SAMPVAB INSERTAR DATOS


--LLENANDO DATOS SALAS
INSERT INTO SALAS VALUES (1,1,1,'COCHABAMBA','PLANTA BAJA')
INSERT INTO SALAS VALUES (2,1,1,'SANTA CRUZ','PLANTA BAJA')
INSERT INTO SALAS VALUES (3,1,1,'ORURO','PISO 1')
INSERT INTO SALAS VALUES (4,1,1,'CHUQUISACA','PISO 1')
INSERT INTO SALAS VALUES (5,1,1,'POTOSI','PISO 2')

--LLENANDO DATOS MESAS
INSERT INTO MESAS VALUES (1,1,1,1,1,1,'DISPONIBLE',1)
INSERT INTO MESAS VALUES (2,1,1,2,1,2,'NO DISPONIBLE',1)
INSERT INTO MESAS VALUES (3,1,1,3,1,3,'NO DISPONIBLE',1)
INSERT INTO MESAS VALUES (4,1,1,4,2,1,'DISPONIBLE',1)
INSERT INTO MESAS VALUES (5,1,1,5,2,2,'NO DISPONIBLE',1)
INSERT INTO MESAS VALUES (6,1,1,6,2,3,'DISPONIBLE',1)
INSERT INTO MESAS VALUES (7,1,1,1,1,1,'NO DISPONIBLE',2)
INSERT INTO MESAS VALUES (8,1,1,2,1,2,'DISPONIBLE',2)
INSERT INTO MESAS VALUES (9,1,1,3,1,3,'DISPONIBLE',2)
INSERT INTO MESAS VALUES (10,1,1,4,2,1,'NO DISPONIBLE',2)
INSERT INTO MESAS VALUES (11,1,1,5,2,2,'NO DISPONIBLE',2)
INSERT INTO MESAS VALUES (12,1,1,6,2,3,'DISPONIBLE',2)
INSERT INTO MESAS VALUES (13,1,1,1,1,1,'NO DISPONIBLE',3)
INSERT INTO MESAS VALUES (14,1,1,2,1,2,'NO DISPONIBLE',3)
INSERT INTO MESAS VALUES (15,1,1,3,1,3,'NO DISPONIBLE',3)
INSERT INTO MESAS VALUES (16,1,1,4,2,1,'NO DISPONIBLE',3)
INSERT INTO MESAS VALUES (17,1,1,5,2,2,'NO DISPONIBLE',3)
INSERT INTO MESAS VALUES (18,1,1,6,2,3,'DISPONIBLE',3)
INSERT INTO MESAS VALUES (19,1,1,1,1,1,'NO DISPONIBLE',4)
INSERT INTO MESAS VALUES (20,1,1,2,1,2,'DISPONIBLE',4)
INSERT INTO MESAS VALUES (21,1,1,3,1,3,'DISPONIBLE',4)
INSERT INTO MESAS VALUES (22,1,1,4,2,1,'DISPONIBLE',4)
INSERT INTO MESAS VALUES (23,1,1,5,2,2,'NO DISPONIBLE',4)
INSERT INTO MESAS VALUES (24,1,1,1,1,1,'DISPONIBLE',5)
INSERT INTO MESAS VALUES (25,1,1,2,1,2,'DISPONIBLE',5)
INSERT INTO MESAS VALUES (26,1,1,3,2,1,'NO DISPONIBLE',5)
INSERT INTO MESAS VALUES (27,1,1,4,2,2,'NO DISPONIBLE',5)

--LLENANDO DATOS TARIFA
INSERT INTO TARIFA VALUES (1,1,1,'NORMAL','0')
INSERT INTO TARIFA VALUES (2,1,1,'PROMOCION INVIERNO','10')
INSERT INTO TARIFA VALUES (3,1,1,'PROMOCION VERANO','15')
INSERT INTO TARIFA VALUES (4,1,1,'PROMOCION CLIENTE FRECUENTE','20')
INSERT INTO TARIFA VALUES (5,1,1,'PROMOCION CLIENTE ANTIGUO FRECUENTE','25')

--LLENANDO DATOS CLIENTES
INSERT INTO CLIENTES VALUES (1,1,'GONZALO PEREZ LOPEZ', '6522242LP',NULL)
INSERT INTO CLIENTES VALUES (2,1,'MARLENE LOAYZA ROQUE', '4112567LP',NULL)
INSERT INTO CLIENTES VALUES (3,1,'JAIME RECABADO ARANDA', '7084542LP',NULL)
INSERT INTO CLIENTES VALUES (4,1,'MARIO PEREDO ARUQUIPA', '6522242LP',NULL)
INSERT INTO CLIENTES VALUES (5,1,'MARIA SOLANO BARRIOS', '5512789LP',NULL)
INSERT INTO CLIENTES VALUES (6,1,'JAZMIN CORONEL LIMA', '7212349CB',NULL)
INSERT INTO CLIENTES VALUES (7,1,'MAUEK GARCIA QUISPE', '4587678SC',NULL)
INSERT INTO CLIENTES VALUES (8,1,'PAPER KING', '6522242','SOCIEDAD COLECTIVA')
INSERT INTO CLIENTES VALUES (9,1,'PLASMAR', '4112567','SOCIEDAD ANONIMA')
INSERT INTO CLIENTES VALUES (10,1,'PULLMAN', '6784542','SOCIEDAD ANONIMA')
INSERT INTO CLIENTES VALUES (11,1,'MADEPA', '4652242','SOCIEDAD ANONIMA')
INSERT INTO CLIENTES VALUES (12,1,'KIMBERLY BOLIVIA', '7162789','SOCIEDAD ANONIMA')
INSERT INTO CLIENTES VALUES (13,1,'IND. VENADO', '6212159','SOCIEDAD ANONIMA')
INSERT INTO CLIENTES VALUES (14,1,'INDUMAR', '5459678','SOCIEDAD COLECTIVA')
INSERT INTO CLIENTES VALUES (15,1,'CARMAR', '6587607','SOCIEDAD COOPERATIVA')

--LLENANDO DATOS MESEROS
INSERT INTO MESEROS VALUES (0001, 1, 1, 'JUAN JOSE','RAMOS','LLANOS');
INSERT INTO MESEROS VALUES (0002, 1, 1, 'MARIA','PEREZ','QUEA');
INSERT INTO MESEROS VALUES (0003, 1, 1, 'ALVARO','RALDES','QUIROGA');
INSERT INTO MESEROS VALUES (0004, 1, 1, 'PEDRO','ESCOBAR','LOPEZ');
INSERT INTO MESEROS VALUES (0005, 1, 1, 'JAIME','GONZALES','SOTO');
INSERT INTO MESEROS VALUES (0006, 1, 1, 'XIMENA','ZAPATA','CHAVEZ');
INSERT INTO MESEROS VALUES (0007, 1, 1, 'YAQUELINE','ROBLES','XIMENES');
INSERT INTO MESEROS VALUES (0008, 1, 1, 'JHONATAN','QUIROZ','SALVATIERRA');
INSERT INTO MESEROS VALUES (0009, 1, 1, 'BRUNO','DIAZ','SAMBRANA');
INSERT INTO MESEROS VALUES (0010, 1, 1, 'ROBIN','DORIA','MENDEZ');
INSERT INTO MESEROS VALUES (0011, 1, 1, 'MARCELO','SOSA','SILLO');

--LLENANDO DATOS PROVEEDORES
INSERT INTO PROVEDORES VALUES(1,1,1,'LA ESTRELLA S.R.L.','Av. Ecuador No 123, Z. Sekata El Alto','7045345','SOCIEDAD DE RESPONSABILIDAD LIMITADA','2851718')
INSERT INTO PROVEDORES VALUES(2,1,1,'NESTLÉ BOLIVIA S.R.L.','Parque Industrial U.V. 31 Santa Cruz','7245647','SOCIEDAD DE RESPONSABILIDAD LIMITADA','4498219')
INSERT INTO PROVEDORES VALUES(3,1,1,'CORPORACION DILLMANN S.A.','Carlos Peña s/n 169 Cochabamba','3052311','SOCIEDAD ANONIMA','4262009-4261256')
INSERT INTO PROVEDORES VALUES(4,1,1,'CERVECERÍA BOLIVIANA NACIONAL SA','Av Montes 400 Esq. Calle Chuquisaca La Paz','3467854','SOCIEDAD ANONIMA','2453354-2454454')
INSERT INTO PROVEDORES VALUES(5,1,1,'COMPAÑIA DE ALIMENTOS DELIZIA','Av. Abrojo 5100 Carretera a Viacha Km 7 El Alto','8722345','SOCIEDAD ANONIMA','2821118')
INSERT INTO PROVEDORES VALUES(6,1,1,'INDUSTRIAS DE ACEITE S.A.','Km. 6.5 Carretera Al Norte Santa Cruz','3422567','SOCIEDAD ANONIMA','4433210')
INSERT INTO PROVEDORES VALUES(7,1,1,'IRUPANA ANDEAN ORGANIC FOODS S.A.','Av. Ecuador No.2249, Zona Sopocachi La Paz','6547321','SOCIEDAD ANONIMA','2152936')
INSERT INTO PROVEDORES VALUES(8,1,1,'MOLINO ANDINO S.A','Km7. Carretera a Oruro La Paz','33545621','SOCIEDAD ANONIMA','2852172')
INSERT INTO PROVEDORES VALUES(9,1,1,'FABRICA DE CHOCOLATES TABOADA S.R.L.','José Mostajo N° 15 Sucre','5733789','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3851402')
INSERT INTO PROVEDORES VALUES(10,1,1,'AMAZONAS','Av. El Maderero, s/n 47 Riberalta','8633461','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3572031')
INSERT INTO PROVEDORES VALUES(11,1,1,'FABRICA DE PALMITOS ITENEZ S.R.L.','Parque Industrial Manzana 8-A Santa Cruz de la Sierra','5421241','SOCIEDAD DE RESPONSABILIDAD LIMITADA','3475234')
INSERT INTO PROVEDORES VALUES(12,1,1,'MOLINO Y FABRICA DE FIDEOS AURORA','Km7. Carretera a Oruro La Paz','8734567','SOCIEDAD ANONIMA','2852172')
INSERT INTO PROVEDORES VALUES(13,1,1,'BOLHISPANIA S.A.','Parque Excombatientes No. 182 Cochabamba','5641241','SOCIEDAD ANONIMA','4407418')
INSERT INTO PROVEDORES VALUES(14,1,1,'INDUSTRIAS ALIMENTICIAS DEL VALLE HNOS. S.R.L.','Av Montes 140 Esq. Calle Chuquisaca Cochabamba','2345312','SOCIEDAD DE RESPONSABILIDAD LIMITADA','4454454')
INSERT INTO PROVEDORES VALUES(15,1,1,'CARGILL DE BOLIVIA','Calle Andres Manzo. 250, Zona Sur Santa Cruz','7565345','SOCIEDAD ANONIMA','3336750')


INSERT INTO VAJILLA VALUES (1,1,1,'PLATO LLANO 1','PLATO LLANO','BLANCO',450)
INSERT INTO VAJILLA VALUES (2,1,1,'PLATO HONDO 1','PLATO HONDO','BLANCO',450)
INSERT INTO VAJILLA VALUES (3,1,1,'PLATO POSTRE 1','PLATO POSTRE','BLANCO',650)
INSERT INTO VAJILLA VALUES (4,1,1,'PLATO LLANO 2','PLATO LLANO','BEIGE',250)
INSERT INTO VAJILLA VALUES (5,1,1,'PLATO HONDO 2','PLATO HONDO','BEIGE',300)
INSERT INTO VAJILLA VALUES (6,1,1,'PLATO POSTRE 2','PLATO POSTRE','BEIGE',450)
INSERT INTO VAJILLA VALUES (7,1,1,'PLATO LLANO 3','PLATO LLANO','BLANCO AZUL',150)
INSERT INTO VAJILLA VALUES (8,1,1,'PLATO HONDO 3','PLATO HONDO','BLANCO AZUL',200)
INSERT INTO VAJILLA VALUES (9,1,1,'PLATO POSTRE 3','PLATO POSTRE','BLANCO AZUL',200)
INSERT INTO VAJILLA VALUES (10,1,1,'SOPERAS 1','SOPERAS','BLANCO',50)
INSERT INTO VAJILLA VALUES (11,1,1,'SALSERAS 1','SALSERAS','BLANCO',55)
INSERT INTO VAJILLA VALUES (12,1,1,'FUENTES Y BANDEJAS 1','BANDEJAS','BLANCO',200)
INSERT INTO VAJILLA VALUES (13,1,1,'TAZA DE CONSOME 1','TAZA DE CONSOME','BLANCO',450)
INSERT INTO VAJILLA VALUES (14,1,1,'TAZA DE TÉ 1','TAZA DE TE','BLANCO',450)
INSERT INTO VAJILLA VALUES (15,1,1,'TAZA DE CAFE 1','TAZA DE CAFE','BLANCO',450)


--LLENANDO DATOS MANTELES
INSERT INTO MANTELES VALUES (1,1,1,'MANTEL REDONDO PEQUEÑO','REDONDO', 'BLANCO', 5 )
INSERT INTO MANTELES VALUES (2,1,1,'MANTEL REDONDO MEDIANO','REDONDO', 'BLANCO', 15 )
INSERT INTO MANTELES VALUES (3,1,1,'MANTEL REDONDO GRANDE','REDONDO', 'BLANCO', 4 )
INSERT INTO MANTELES VALUES (4,1,1,'MANTEL CUADRADO PEQUEÑO','CUADRADO', 'ROSA', 6 )
INSERT INTO MANTELES VALUES (5,1,1,'MANTEL CUADRADO MEDIANO','CUADRADO', 'BEIGE', 11 )
INSERT INTO MANTELES VALUES (6,1,1,'MANTEL CUADRADO GRANDE','CUADRADO', 'CAFE', 5 )
INSERT INTO MANTELES VALUES (7,1,1,'MANTEL RECTANGULAR PEQUEÑO','RECTANGULAR', 'ROSA', 6 )
INSERT INTO MANTELES VALUES (8,1,1,'MANTEL RECTANGULAR MEDIANO','RECTANGULAR', 'BEIGE', 11 )
INSERT INTO MANTELES VALUES (9,1,1,'MANTEL RECTANGULAR GRANDE','RECTANGULAR', 'AMARILLO', 5 )
INSERT INTO MANTELES VALUES (10,1,1,'MANTEL OVALADO PEQUEÑO','OVALADO', 'AZUL', 3 )
INSERT INTO MANTELES VALUES (11,1,1,'MANTEL OVALADO MEDIANO','OVALADO', 'BLANCO', 3 )
INSERT INTO MANTELES VALUES (12,1,1,'MANTEL OVALADO GRANDE','OVALADO', 'NEGRO', 3 )

--LLENANDO DATOS ALMACENES
INSERT INTO ALMACENES VALUES (1,1,1,'CENTRO','Edif. Mcal. Ballivián P. 14 Of. 1403 (Z. Central) - La Paz, LA PAZ')
INSERT INTO ALMACENES VALUES (2,1,1,'MAX PAREDES','Edif. Electra Piso 3, c. Mercado (z. Max Paredes) - La Paz, LA PAZ')
INSERT INTO ALMACENES VALUES (3,1,1,'SAN MIGUEL','c. Max Paredes No. 589 (Z. Sur) - La Paz, LA PAZ')
INSERT INTO ALMACENES VALUES (4,1,1,'MIRAFLORES','c. Litoral No. 123 (Z. Moraflores) - La Paz, LA PAZ')
INSERT INTO ALMACENES VALUES (5,1,1,'EL ALTO','c. Lourdes No. 589 (Z. 16 de Julio) - El Alto, LA PAZ')
INSERT INTO ALMACENES VALUES (6,1,1,'VILLAFATIMA','c. Rosendo Gutierrez Nro. 410 (Z. Villafatima) - La Paz, LA PAZ')

--LLENANDO DATOS EMPLEADOS
INSERT INTO EMPLEADOS VALUES (1,1,1,'JAIME QUIROGA QUEA','GERENTE',20,8,8,1000,1, 300, 300,7500)
INSERT INTO EMPLEADOS VALUES (2,1,1,'SONIA PERALTA GUTIERREZ','CONTADOR',20,8,8,800,1, 250, 300,5500)
INSERT INTO EMPLEADOS VALUES (3,1,1,'JHOSELIN PATZI LLANOS','SECRETARIA',24,8,8,8000,1, 250, 300,5500)
INSERT INTO EMPLEADOS VALUES (4,1,1,'NICOLAS CHOQUE RAMIREZ','JEFE DE BARRA',20,9,9,400,0, 0, 300,5500)
INSERT INTO EMPLEADOS VALUES (5,1,1,'ADALID PEREZ HUANCA','JEFE DE COCINA',20,8,8,400,1, 250, 300,4500)
INSERT INTO EMPLEADOS VALUES (6,1,1,'ANDRES XIMENEZ QUISPE','METRE',24,9,9,1000,1, 250, 250,4500)
INSERT INTO EMPLEADOS VALUES (7,1,1,'LUCIO ALVARADO MENDOZA','JEFE DE LIMPIEZA',24,10,10,400,1, 250, 250,3400)